新浪微博批量登录获取cookie

新浪微博登录批量获取cookie

目的

微博的很多数据在查看的时候是需要用户登录之后才可以的,比如web端的微博关键词搜索翻页,不登录的情况下只能查看第一页,而当请求头中携带登录后的cookie时,可以获得翻页后的数据。

预登录

登录地址:http://my.sina.com.cn/profile/unlogin
在这里插入图片描述
在用户输入用户名时会将用户名通过加密,通过地址(https://login.sina.com.cn/sso/prelogin.php?entry=account&callback=sinaSSOController.preloginCallBack&su={su}&rsakt=mod&client=ssologin.js(v1.4.15)&_={ts})来返回一批后续登录需要携带的参数,其中su是加密后的用户名,ts是13位的时间戳。
在这里插入图片描述

登录

初次登录时不携带验证码,post请求地址:https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_={str(int(time.time() * 1000))}
其中可变参数有:
​ su—加密后的用户名
​ servertime-----预登录返回的参数
​ nonce----预登录返回的参数
​ rsakv----预登录返回的参数
​ sp—servertime + ‘\t’ +nonce +’\n’+ password 这一串字符(如图)的rsa加密, rsa加密的modules是与请求返回的pubkey,exponent是"10001"(二进制),用PKCS1_v1_5方式填充,rsa的加密可以用 python的RSA库模拟 也可用pycryptodome库模拟,选择PKCS1_v1_5即可
在这里插入图片描述
其中还有一个可有可无的参数:door----验证码
在这里插入图片描述
在所有的参数都完成后请求时需要携带一个headers,其中headers中的cookies中的参数需要注意拼接,使用session会话保持,如果这里不添加请求头信息在后续的验证码获取阶段会出现验证码错误情况。
在这里插入图片描述
根据登录的响应结果来判断是否登录成功,如果是需要验证码或者验证码错误的情况下,需要重新获取验证阿门。

注意:如果获取验证码错误了就重试获取验证码,验证码的请求获取需要pcid,这个pcid不能变,也就是说不需要重新去获取pcid,只需要将上次获取的pcid重新传递过去重新获取即可。

在这里插入图片描述
验证码的请求地址为:‘https://login.sina.com.cn/cgi/pin.php?r={}&s=0&p={}’.format(random.randint(10 ** 6, 10 ** 8), pcid)

使用session去请求,将验证码下载到本地,手动输入验证码(也可以用验证码识别方式)
在这里插入图片描述
在登录成功后,测试cookie的可用性,headers中携带生成的cookie去请求web端的搜索(https://s.weibo.com/weibo?q=北京&typeall=1&suball=1&timescope=custom:20190625:&Refer=SWeibo_box&page=2)匹配内容来检测cookie的可用性,如果匹配成功就将该cookie存到库中。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值