由于在豆瓣发了个租房帖子,发现很快就被其他的帖子淹没,但是手动顶帖实在太累,😭,所以想通过自动顶帖的方式来解放双手!
Python学习资料或者需要代码、视频加Python学习群:960410445
评论请求分析
通过Chrome network 分析
需要带5个参数,其中 ck 是 cookie 里面的值,rv_comment 是 评论
返回302代表重定向
Python 模拟请求:
直接运行即可。
但是多运行几次就会发现,返回的状态码是200,而且没有顶帖成功。实际上是触发了豆瓣的防爬虫。
触发了豆瓣验证码
而且在我们顶帖的时候发送请求的时候还带有 captcha-solution 和 captcha-id 字段。
目前发现,每次评论就算相隔1分钟,只要满3次,就一定会弹出这个验证码进行验证。
验证码解析
遇到验证码我们就来破解验证码。
tesserocr
识别图形验证码需要安装tesserocr这个库,下面介绍下tesserocr。
tesserocr是Python的一个OCR识别库,但其实是对tesseract做了一层Python Api的封装,核心还是tesseract,所以在安装tesserocr之前,需要先安装tesseract。Tesseract(/‘tesərækt/) 这个词的意思是”超立方体”,指的是几何学里的四维标准方体,又称”正八胞体”,是一款被广泛使用的开源 OCR 工具。
在Mac下,使用 brew 安装
brewinstalltesseract--all-languages
接下来再安装tesserocr即可:
brewinstallimagemagickpipinstalltesserocr pillow
Python 代码如下:
验证的图片如下:
douban-captcha-example1
结果无法识别。
换一张简单的图片试试:
结果如下:
5594
看来 Tesseract 只能识别一些简单的验证码,不适合豆瓣验证码识别。
试试识别验证码平台。
注意:
支持2.7.+及3.+
配置流程:
先开通个百度的账号;
开通文字识别服务,打开后点击立即使用:https://cloud.baidu.com/product/ocr.html
点击步骤2,应该有个信息确认的,确认后,会进入到用户个人首页,向下滑动,直接点击文字识别:
点击创建应用,输入一堆内容后,点击确认即可,然后点击我的应用,这里面的API Key 跟Secret Key需要使用到:
点击右上角,用户中心,用户ID也需要用到:
需要的信息准备好了,pip 安装一波
Python pip install baidu-aip
测试一波
验证的图片如下:
douban-captcha-example1
结果走一波:
{"log_id":3968431492157876638,"words_result_num":1,"words_result": [{"words":" minute:"}]}
从结果可以看出识别出了这个验证码。
words_result_num 是识别结果数
words_result 是定位和识别结果数组
words 是识别结果字符串
再来试试
douban-captcha-example2
结果如下:
{"log_id":5251449865676063710,"words_result_num":0,"words_result": []}
没有识别出来,可以看到对于复杂一些的验证码还是会出现无法识别的情况,但是胜在免费。
网友评论