requests 实现模拟登录,获取cookie

 

有个需求需要模拟登录csdn获取cookie,对csdn进行后续系列操作,刚开始使用的selenium,功能可以实现,但是效率有点低,

后来改用的requests,遇到不少坑,今天来总结一下。

首先找到csdn登录的url,在故意输错密码的情况下点击登录,检查会发现network中有一个dologin的响应,这就是要提交到服务器的账号密码信息。点开会发现下图所示:请求的url,请求方式post

 继续往下翻可以找到我们向服务器发送的请求信息,pwd就是我们提交的密码,user是我们提交的账号,其他几个暂时不知道干嘛用的,不过在后续的操作中发现,uatoken和webumidtoken可有可无。跟以往的form提交不太一样,这里是request payload,用form方式尝试提交了几次发现行不通,于是在网上开始找资料,有位大神给出了解答

 解决方法如下:

1、将request payload中的内容放到一个字典中,然后发送post请求时,将这个字典参数使用json.dumps()转化为字符串格式传入进去

2、可以看到它的请求头的content-type字段值为aoolication/json, 也就是说它是json传参,所以我们这里把requests中的data参数改为json就可以了,如:

res = requests.post(url, headers=header, json=data).text

打马赛克的地方就是我们的账号和密码,输入自己的账号密码就可以了。到了这一步模拟登陆就已经搞定了

接下来是获取cookie,很简单的一行代码(ps: response.cookies获取到的是一个cookiejar对象,需要使用requests.utils.dict_from_cookiejar来将cookiejar对象转换为一个字典,这个字典后续使用的时候,在请求时直接传入就可以了,如  requests.get ( url , cookies=cookies))

cookies = requests.utils.dict_from_cookiejar(response.cookies)

 

  • 5
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风来不如追风去

有钱的捧个钱场,没钱的捧个人场

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值