[Python Challenge通关]第4关 follow the chain

有趣的Python Challenge编程游戏闯关攻略一(0-4关) **Python Challenge攻略一(0-4关)**介绍关卡第0关 介绍 平时自己学python,大家肯定很是无聊,推荐一个很早之前的网页版python闯关游戏——Python Challenge,虽然说这个网站很早了,但是很有意思,你会发现这些游戏一点也不简单,基本都需要通过编程来解决…… 有意思的是,这是个解谜游戏,所以你要去发现线索,很有意思。 游戏链接:http://www.pyth... 阅读详情

chainsaw

挑战地址,点我

分析

点击图片跳转到新的网页:

and the next nothing is 44827

当前页面的 url: http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345

这应该是一个类似链表的结构,用 44827 替换当前网页的 url:

and the next nothing is 45439

用代码实现,看看最终会怎么样。这里需要使用 urllib.request 来发起 http 请求,获取返回的内容,然后使用正则表达式匹配 nothing 的值,替换掉原来的 nothing 循环下去。

#!/usr/bin/env/ python3

import urllib.request
import re
import time

baseURL = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=%s"

# nothing 初始值
nothing = "12345"

while True:
    url = baseURL % nothing
    with urllib.request.urlopen(url, timeout=30) as f:
        response = f.read().decode("utf-8")
        print(response)
        # 使用正则表达式匹配到 nothing 的值,如果匹配到,替换 nothing,匹配不到,退出循环
        result = re.search(r"\d+", response)
        if result:
            nothing = result.group()
        else:
            break
    # 暂停 1s,请求不要太频繁
    time.sleep(1)

运行了一会儿,输出如下内容:

and the next nothing is 44827
and the next nothing is 45439
<font color=red>Your hands are getting tired </font>and the next nothing is 94485
...省略很多行
and the next nothing is 3875
and the next nothing is 16044
Yes. Divide by two and keep going.

根据提示,nothing 的当前值是 16044,把 nothing 的值设置为 str(16044/2) 继续运行,又输出了如下内容:

and the next nothing is 25357
and the next nothing is 89879
... 省略很多行
and the next nothing is 82682
There maybe misleading numbers in the
text. One example is 82683. Look only for the next nothing and the next nothing is 63579

页面内容中出现了两次数字,根据提示应该取后面的数字,需要修改正则表达式,使得匹配规则更加精确。

#!/usr/bin/env/ python3

import urllib.request
import re
import time

baseURL = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=%s"

# nothing 初始值
nothing = str(63579)

while True:
    url = baseURL % nothing
    with urllib.request.urlopen(url, timeout=30) as f:
        response = f.read().decode("utf-8")
        print(response)
        # 使用正则表达式匹配到 nothing 的值,如果匹配到,替换 nothing,匹配不到,退出循环
        result = re.search(r"the next nothing is (\d+)", response)
        if result:
            nothing = result.group(1)
        else:
            break
    # 暂停 1s,请求不要太频繁
    time.sleep(1)

继续运行,又输出了如下内容:

and the next nothing is 37278
and the next nothing is 53548
...省略很多行
and the next nothing is 52899
and the next nothing is 66831
peak.html

最后输出了 peak.html,这就是下一关的入口了http://www.pythonchallenge.com/pc/def/peak.html。

参考资源:

  1. urllib.request 官方文档
  2. Python 爬虫介绍
  3. python 正则表达式菜鸟教程
  4. 正则表达式30分钟入门教程
PythonChallenge闯关详解 前言 PythonChallenge是国外的一位工程师设计的一套编程闯关游戏,网址:PythonChallenge,每一关都可以用一段Python程序解决问题得到下一关的入口,本博文作为一个学习笔记,通过边学边记的方式分享我的闯关经验。 0 图片上是2 38的字样,下方提示为改变当前URL地址,很明显,用Python脚本计算下2的38次方,替换下URL中的0就可以了 2**38 得到274877906944,那么下一关地址: http://www.pythonchallenge.com/pc/def/27 阅读详情

相关推荐

ComfyUI-controlnet控制出图

提供加载预处理器节点。

Bu2n的博客 5494

Python Challenge 第 4 关攻略:linkedlist

代码 import requests url = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing={}" def gethtml(index): response = requests.get(url.format(index)) return response index = 1234...

dianyin7770的博客 344

DrawCall、Batches、SetPassCalls的区别和联系

一、DrawCall、Batches、SetPassCalls的基本理解 我们先从图形渲染的角度对这些概念做一个基本的理解。 1.1 DrawCall DrawCall实际上指的是一次图形渲染接口的调用,比如OpenGL的glDrawArrays或者glDrawElements的一次调用,以及DirectX的DrawPrimitive或者DrawIndexedPrimitive。因此,DrawCall可以简单理解为一次渲染指令调用。 1.2 Batches 我们知道,在调用DrawCall之前,需要设置渲染

远行's Blog 6378

pythonchallenge 第四关

老套路先F12查看网页源代码 网页标题是“follow the chain” 网页图片的链接地址是初始链接 http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345 明白了,不停更换后面nothing的参数值,不到400次就能够得到第五关的地址 代码如下: import urllib.request url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?no.

dust_fall的博客 291

四足机器人关节电机FOC控制实战:从磁编码器校准到SVPWM调试避坑指南

本文详细解析了四足机器人关节电机FOC控制实战,涵盖磁编码器校准、电流环调试和SVPWM波形优化等关键环节。通过MIT Cheetah案例展示如何解决21倍电气误差问题,并提供相序自动校正、PI参数整定等实用代码片段,帮助工程师避开永磁同步电机(PMSM)控制中的常见陷阱。

weixin_29281915的博客 489

eDP、DP与HDMI——现代显示接口的核心解析

eDP、DP和HDMI各有千秋:eDP以嵌入式设备的低功耗见长,DP凭借开放生态和高带宽成为专业领域首选,而HDMI则依靠庞大的消费电子生态稳居家庭市场。未来,随着Type-C接口的普及和超高清内容的爆发,三者的技术边界可能进一步融合,但各自的核心优势仍将长期共存。对于用户而言,选择接口需基于设备需求——游戏玩家青睐HDMI的VRR,设计师依赖DP的多屏扩展,而轻薄本则离不开eDP的紧凑设计。

麟的博客 8411

python challenge 解题 第4关

第四关 点击图片,跳转到页面,显示文本为“and the next nothing is xxx”,查看源代码提示,尝试400次就足够找到页面。 本关是用文本中的数字替换url中的数字,找到真正的下一关链接。 运用爬虫基础。 import requests # 初始化第一次的url url = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345" r = requests.get(url) # 循环四百次 for i i

weixin_49603910的博客 590

AI Agent在营销领域的实战策略

本文从第一性原理出发,系统性拆解AI Agent在营销领域的落地逻辑、技术架构、实现方案与实战策略。全文覆盖从基础概念到高级优化的全层级知识:底层理论层面推导营销Agent的效用函数与决策框架;技术架构层面提出"感知-记忆-规划-行动-反思"五组件可落地架构;实践层面提供生产级代码实现、多行业案例与ROI提升方法论;前沿层面探讨多Agent协同、世界模型仿真等下一代技术方向。

操作系统内核探秘的博客 227

深度解密 python challenge第4关之 小小的爬虫

解决思路:      我们可以查看下源码得到如下信息: follow the chain <!-- urllib may help. DON'T TRY ALL NOTHINGS, since it will never end. 400 times is more than enough. --> Solutions to previous levels: Pyth

道哥的技术博客 1172

解密网页视频Blob链接:从防盗链到流媒体分片技术

本文深入解析了网页视频中Blob链接的工作原理,揭示了其作为现代视频防盗链与流媒体分片技术核心的本质。文章详细阐述了Blob对象与Media Source API如何协同工作,将视频数据分片传输,并结合HTML5的video元素实现安全、流畅的播放体验,有效提升了资源保护能力。

c7d8e的博客 317

关于MOS管栅极和栅介质(氧化物)的材料选择

大概解释了高K材料作为栅介质的好处,以及为什么会带来好处,同时引出了金属栅的优点,总结了使用高K材料和金属栅的原因。

qq_52054477的博客 1万+

Python Challenge(4--5关)——我的解题报告(running with python3.x)

前面关卡的解题报告在这里http://blog.csdn.net/richytang/article/details/12249507(第2-3关) 第4关:http://www.pythonchallenge.com/pc/def/linkedlist.php         这关的名字叫做follow the chain。关名往往时能提供很多帮助的。关卡只有一张图片,结果发现图片是能点击的

RichyTang的专栏 1660

某瓜数据app 获取达人直播商品信息接口 Sign

某瓜数据app 获取达人直播商品列表接口 Sign

自成背后的博客 6039

python challenge 第四关

好吧,我承认,昨天用urlopen失败,今天用却成功了,否则,这关只能是找别人现成的答案了……        http://www.pythonchallenge.com/pc/def/linkedlist.php 不管是查看源代码还是直接点网页,都可以看到http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345 及

sndyangd的专栏 1150

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

pythonchallenge第四关

http://www.pythonchallenge.com/pc/def/linkedlist.php 这一关有些无聊 查看网页源码,发现网页后缀应该换成?nothing=xxxxx 而且要换很多次,不解释了,抓取网页,正则配置数字,但是中间会有两次特殊情况,需要记录抓取网页的次序,如果发现次序有增加,但是没有结果正则匹配出来,就停下,手工进入相应的网页看看,然后按其指示再抓即可.

xuye_zhen的专栏 873

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python challenge 第四关解法 http://www.pythonchallenge.com

import re, urllib nothing = '12345' nothing = 16044 >> 1 # '82683', '82682' nothing = str(nothing) nothing = '63579' re_match = re.compile

pyman hall 1798

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

PythonChallenge解谜

题目列表写在前面Challenge 0Challenge 1Challenge 2Challenge 3 写在前面 刷B站的时候发现有up主做互动视频是说编程解谜的,结果我在他视频的开头部分找到了解谜网站的地址就兴冲冲地过来自己玩起来了。在解谜的过程中发现还是学到了新的东西,于是干脆用这篇博客记录一下解谜的过程和答案。题目的话呢,大家自行到原网站去看就好啦! Challenge 0 这个题目用来热...

weixin_41700916的博客 793

python3.3.1 pythonchallenge 通关之level 4

level3还意犹未尽,接着来到了level4,还是直播ing。。。上图: 都是一个套路,进html源码:         哈哈,这就明白了,TA是让用urllib来不断get方式传送nothing的值,但是,我偏不用。我还用tornado: import tornado.httpclient link='http://www.pythonchallenge.co

littlethunder的专栏 3529

Python Challenge 第 4 关攻略:follow the chain

Python Challenge 第 4 关攻略:follow the chain 题目地址 http://www.pythonchallenge.com/pc/def/linkedlist.php 题目内容 题目解法 网页的标题是 follow the chain 追随链条 网页的 URL 地址是 linkedlist 链表 图中也是链条 首先查看网页源代码,发现...

团子大圆帅的博客 494

[Python Challenge通关]第0关 warming up

第 0 关 挑战地址,点我 题目: Hint: try to change the URL address. 分析: 根据提示信息 Hint: try to change the URL address. 尝试修改 URL 地址。 图片上显示的是2的38次方,猜测是计算2的38次方的结果来修改URL。 2 ** 38 # 274877906944 当前页面的 URL 地址是:http://...

蒋故事的专栏 985

[Python Challenge通关]第13关 call him

phone that evil 挑战地址,点我 分析 图片上一个电话,下面还有一行提示 phone that evil。 右键查看网页源码,可以看到一个 phonebook.php,这是电话本。 打开可以看到是一个类似 xml 的东西,但是报错了。 &lt;?xml version="1.0"?&gt; &lt;methodResponse&gt; &lt;fault&gt; &lt;val...

蒋故事的专栏 744

[Python Challenge通关]第3关 re

第 3 关 挑战地址,点我 问题 One small letter, surrounded by EXACTLY three big bodyguards on each of its sides. 一个小写字母,每边都有三个大保镖。 分析 联想到上一关,我们再右键查看页面源码,可以看到也有一堆字符,根据提示信息,我们需要找到左右两边都被3个大写字母包围的小写字母。我们可以使用正则表达式来实...

蒋故事的专栏 633

[Python Challenge通关]第12关 dealing evil

挑战地址,点我 分析 页面上的图片像有明显的行间隔,安装上一关的方法尝试分割,没有什么结果。 搜索了一下,图片的主题是分牌,当前图片的 url 是 http://www.pythonchallenge.com/pc/return/evil1.jpg, 图片上牌被分成了 5 份,那么看下: http://www.pythonchallenge.com/pc/return/evil2.jpg h...

蒋故事的专栏 590

[Python Challenge通关]第11关 odd even

挑战地址,点我 分析 页面上是一张模糊的图片,提示信息只有这一关的主题 odd even。 仔细看图片,上面有一些重影,考虑应该是需要分离出奇数和偶数像素。 奇数和偶数像素怎么定义?现在有两个维度,可能有如下集中方式: 只考虑 x 只考虑 y 考虑 x + y 同时考虑 x 和 y 测试发现 3 和 4 是可以的,python 实现如下,第 3 种方式: #!/usr/bin/env/ ...

蒋故事的专栏 545

[Python Challenge通关]第6关 now there are pairs

挑战地址,点我 分析 右键查看网页源代码看一下: &lt;html&gt; &lt;!-- &lt;-- zip --&gt; &lt;head&gt; &lt;title&gt;now there are pairs&lt;/title&gt; &lt;link rel="stylesheet" type="text/css" href="../s

蒋故事的专栏 544
上一篇: [Python Challenge通关]第3关 re
下一篇: [Python Challenge通关]第5关 peak hell
蒋故事
博客等级 码龄12年 1粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值