前言:最近从一篇微信文章中了解到了黑板客爬虫关卡这个网站,便去尝试了一下,以下是过程记录
代码源码在文章最后,如果觉得对您有帮助的话,希望您点个赞鼓励创作
第一关
地址:http://www.heibanke.com/lesson/crawler_ex00/
这是最初的关卡,也没有什么难度,根据提示在网址后面更替数字,会发现一层一层迭代,那么猜测需要一直迭代直到最后一个网站
显然这里考察的就是一个程序的迭代,还有简单的爬虫提取数字
程序结束标志是无法提取到数字,这里用一个异常处理就好
第二关
地址:http://www.heibanke.com/lesson/crawler_ex01/
在密码位置随意输入一个数字,点提交之后,利用开发者工具查看网络部分
这里的截图没用截全,在上面还有个请求方式POST
,到这里就知道了,这一关考察的是表单的提交。
根据其Form Data构造参数,使用requests.post
进行提交即可
根据其提示,密码是30以内数字,那么遍历就行了
根据其反馈的文本来判断是否需要继续循环遍历,当不是密码错误的时候就结束循环(还有可能出现的提示是 密码只有数字哦 )
第三关
地址:http://www.heibanke.com/lesson/crawler_ex02/
从第三关开始,就需要注册它这个网站了,没用登录直接访问的话会自动跳转到登录界面
发现其说比上一关多了两层保护,那么先用上一关的代码试试,发现会403,同样的思路利用开发者工具来查看
发现headers里面需要带cookies
,只需要多这一步就行了(我也不知道还有层保护是什么)
第四关
地址:http://www.heibanke.com/lesson/crawler_ex03/
密码随机提交后,利用开发者工具会发现提交跟之前的没啥区别,但是新出现的页面不一样
这个网站的加载特别慢,在加上一开始的提示,我们知道这个页面最好是用多线程访问,因为每页出现的密码的位置是随机的,所以遍历13页并不一定会(可以说很大概率不会)拿到全部100位,所以多线程是很必要的
前一列是密码的位置,后面一列是密码的值
根据翻看了几页后,猜测密码大约是100位,那么我们就要不停地刷,刷满100位后排序一下就好了(或者说从1-100按序遍历就好了)
因为经过了注册,所以这一关的密码每个人都是不一样
第五关
地址:http://www.heibanke.com/lesson/crawler_ex04/
同样步骤,开发者工具启动!
Form Data中除了以往出现的三个参数,还出现了两个新参数,在输入界面尝试输入后发现,最后一个参数是验证码,那么就需要寻找倒数第二个参数
在网页源码中搜索参数变量名,发现
于是这个参数也有了
密码这里并没有提示,那么根据二三关的提示进行1-30的猜测
关于验证码,本来是打算用tesseract-ocr
来解决的,奈何识别率太低了,在做训练集的时候又发现自己生成的语言库与tesseract
版本不一致导致无法运行,如果有知道解决方法的小伙伴,希望能向您请教~
最后我利用了百度ocr的api接口,进行的识别,虽然识别正确率也不高,但是总归能用
源码
最后放上GitHub源码
ps:如果本篇文章对您有助的话,记得点赞评论支持哦~