爬虫如何用cookies绕过验证码?

想用python爬虫实现登陆B站,但B站有验证码,我又不知道怎么把图片下下来,因为你在输入时要点那个框才能显示图片,而每张图片刷新一次又随机。所以我就想人工登陆一次,找到cookies,下次登陆带上cookies就绕过验证码登陆了。

用Fidller查看了下,表面上是这个URL:https://passport.bilibili.com/login
但post的实际是这个URL:https://passport.bilibili.com/login/dologin,所以我就看服务器返回的cookies:

图片描述

我的代码是这样的:

import requests

cookies = {
    'DedeUserID': 'XXX',
    'DedeUserID__ckMd5': 'XXX',
    'SESSDATA': 'XXX'
    }
url = 'https://passport.bilibili.com/login/dologin'
    
s = requests.session()
html = s.get(url, cookies=cookies) # 登陆
print(str(html.status_code))

当然,输出的状态码是404,然后我去掉了'/dologin',就输出200。
但这是因为'https://passport.bilibili.com/login这个是谁都可以GET的吧

求大神给出解释或可执行思路

阅读 13.9k
4 个回答

手动登录一次,把cookie都丢到python里面去请求。

点击验证码框才能出图片,其实也是发送了一次请求的
图片描述

自己补充下:其实cookie最终都放到header里面的。自己登陆一次后,再刷新一下首页就能看到requests里面的header里有cookie字段了。所以直接加到header也行。
还有,怎么判断你是否登陆成功呢?光是返回200是不行了,毫无用处。你要去打开那些只有你这个账户才能打开的东西。比如B站就可以看这个URL'http://space.bilibili.com/ajax/member/MyInfo'

还有各种跳转啊,加载啊之类的,要用到各种前端语言,服务器返回给你的不一定就是那个页面啊,有可能经过多个跳转啊,用什么来完成这样的事件之类的,反正学无止境呢。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进