前一段时间想尝试一下用 Python 实现自动发一些文章到头条上,因为头条没有提供API发布文章,所以只能通过一些浏览器自动化,实现自动发布文章。但是第一道坎就是登录账号的时候弹出来的滑块验证码。
相信大家对滑块验证码比较熟悉了,就是一张有缺口的背景图,和一张缺口的图片,通过拖拽使背景图和前景图拼接成一张完整的图片。
查找了网上很多文章,基本上滑块验证码实现的方式与头条的并不一样,所以也不能成为解决方案。在 GitHub 搜索「滑块验证码」指定 Python 语言后发现了头条的字样,于是阅读了一遍代码,了解了实现原理。
核心代码分为两个步骤,一是计算需要滑动的距离,二是模拟出人手操作滑动的速度,因为匀速滑动会被认为是机器,不允许通过验证。
这里利用了 这个库提供的 方法,从一张大图中搜索小图,计算出大图上各个区域和小图的相识度,再通过 方法找到最大值。从而计算需要滑动的距离。具体代码如下
利用匀加速和匀减速计算位移就可以大概模拟出人拖拽的行为。
大概的思路如下
模拟滑动
代码实现如下
有了这两个核心代码,就可以使用账号密码登录头条了完整代码可以参考 https://github.com/chushiyan/slide_captcha_cracking。
这里并不推荐使用这种方式短时间内进行多次登录,可以使用设置 cookie 的方式跳过登录。
最近在头条发了点搞笑动图,赚了瓶水钱,大家如果也想尝试,可以克隆我的项目 https://github.com/AD-feiben/toutiao。
登录头条后,打开控制台 -> Network 选项,将 cookie 赋值给 config.py 中的 Toutiao_cookie_str 即可。
image
如果你喜欢我的文章,希望可以关注一下我的公众号【前端develop】
前端develop