live忘有 发表于 2019-6-25 14:09:05

网络爬虫-验证码登陆


验证码是一种非常有效的反爬虫机制,它能阻止大部分的暴力抓取,在电商类、投票类以及社交类等网站上应用广泛。如果破解验证码,成为了数据抓取工作者必须要面对的问题。

在访问某些网站时,我们最初只是需要提供用户名密码就可以登陆的,比如说豆瓣网,如果我们要是频繁登陆访问,可能这时网站就会出现一个验证码图片,要求我们输入验证码才能登陆,这样在保证用户方便访问的同时,又防止了机器的恶意频繁访问。对于这种情况,我们可以使用代理服务器访问,只需要换个ip地址再次访问,验证码就不会出现了,当然,当验证码再次出现的时候,我们只能再更换ip地址。

如果对于网站首次登陆就需要提供验证码的情况呢?两种办法,我们可以使用cookie登陆,还有就是可以采用验证码识别手段。使用cookie登陆比较简单,但是有时效性问题。而验证码识别虽然是个很好的思路,但是识别的精度又限制了抓取的效率。 拿知乎网举例子,如图所示,知乎的登陆界面要求我们输入用户名密码的同时,给出验证码,才能登陆。

如果采用cookie登陆,可以这样实现:首先需要手动登陆网站一次,获取服务器返回的cookie,这里就带有了用户的登陆信息,当然也可以采用获取的cookie登陆该网站的其他页面,而不用再次登陆。具体代码已经实现,详见ZhihuSpider。我们只需要在配置文件中提供用户名密码,及相应的cookie即可。对于不出现验证码的情况,爬虫会提交用户名密码实现post请求登陆,如果失败,才会使用事先提供的cookie信息。

需要说明的是,判断爬虫登陆与否,我们只需要看一下爬取的信息里面是否带有用户信息即可。在使用cookie登陆的时候,还需要不定期更新cookie,以保证爬取顺利进行。

ximenyan 发表于 2020-1-2 20:47:09

谢谢指教,:loveliness:

ximenyan 发表于 2020-1-2 20:47:44

great,;P
页: [1]
查看完整版本: 网络爬虫-验证码登陆