场景描述
做过爬虫或者机器人的朋友一定会遇到登陆的问题:大多数的网站需要登陆之后才能读取内容或者执行操作。要实现网站的自动化登陆和操作,大概的方法有两种:1,通过Chrome无头浏览器-selenium等工具模拟登陆,然后通过控制selenium实现和网站的交互操作;2,将包含已登陆信息的cookie设置到HTTP请求当中,直接通过HTTP request进行交互;这两种方法各自适用不同的场景,互相不能替代。但总的来说,当已经摸清服务器HTTP API的时,第二种方法是最直接有效,代码也是最简洁的。
面对的问题
对于第一种方法来说,最麻烦的是处理现在越来越繁复的验证码校验。虽然google和baidu 都有发布过一些包可以识别图片中的验证码,但准确率并不高;并且遇到需要手动拖拽的防机器人校验还得加入复杂的js代码进行动作模拟;
对于第二种方法,关键是如何获取cookie并妥善的处理cookie中登陆token过时的问题。我这篇文章提供一个简单的解决思路,虽然没有完全的自动化,但是只是部分解决了获取cookie和将cookie同步到机器人端的问题
解决思路
首先,我们需要在平时我们访问网站的时候,能够自动的将cookie保存下来,并且发送到云服务器数据库中,方便机器人获取该cookie。
其次,在每次机器人运行对应的工作时,都到云数据库中获取对应网站最新的cookie,再执行自动化操作。
这样做的好处在于:
我们不需要写复杂的代码去模拟登陆
每次我们访问常用网站的时候都会将最新的cookie更新到数据库,避免机器人使用的co