前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python模拟get/post请求登录

python模拟get/post请求登录

作者头像
py3study
发布2020-01-06 14:19:54
4.1K0
发布2020-01-06 14:19:54
举报
文章被收录于专栏:python3python3

今天学习了python模拟登陆,然后自己进行一下总结,以csdn登录为例子,浏览器为Chrome

1:直接携带cookie请求url地址

  • 1.1cookie放在headers中
代码语言:javascript
复制
import requests
#1.直接携带cookie请求URL地址
url="https://www.csdn.net/"
#cookie放在headers中
headers={"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Mobile Safari/537.36",
         "Cookie": " cookies值"  }
response=requests.get(url,headers=headers)
with open('csdn1.html','w',encoding='utf-8') as f:
    f.write(response.content.decode())

 这样生成的csdn1.html文件打开就是你的csdn主页。

这里又有一个新的问题,就是我的cookie值在哪里找?

右键点击登录进去之后的页面,会出现以下形式,然后就可以找到cookie值。

  • 1.2cookie字典传给cookies参数
代码语言:javascript
复制
import requests
headers={"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Mobile Safari/537.36"}
cookie= "cookie值"
#将cookie字符串形式转换为字典形式
cookie_dict = {i.split("=")[0]:i.split("=")[-1] for i in cookie.split(";")}
print(cookie_dict)
response=requests.get(url,headers=headers,cookies=cookie_dict)
with open('csdn2.html','w',encoding='utf-8') as f:
    f.write(response.content.decode())

2:先发送post请求,获取cookie,带上cookie请求登录后的页面

代码语言:javascript
复制
#步骤:
    #1):session=requests.session() session具有的方法和requests方法一样
    #2):session.post(url,data,headers)  服务器设置在本地的cookie会保存在session中
    #3):session.get(url) 会带上之前保存在session中的cookie

#携带cookie的请求地址
url="https://www.csdn.net/"
#post请求的地址
post_url = "https://passport.csdn.net/account/verify"
#post时需要提交的数据
post_data = {"username":"18328068525","password":"CamYes123!"}
#实例化session
session = requests.session()
#使用session获取本地的cookie
session.post(post_url,data=post_data,headers=headers)
#再使用session请求登录后的页面
response=session.get(url,headers=headers)

with open('csdn3.html','w',encoding='utf-8') as f:
    f.write(response.content.decode())

在这里我们需要去寻找post_url。在登录界面中点击鼠标右键,得到以下界面,找到提交用户名和密码的form表单,其中的action值即为post_url

 这里又出现了一个问题。有些页面的form表单中并没有action这个属性,那么我们怎么找post_url?

我们需要进行抓包,找到Request Method为post的网址,分析一下是否为提交的网站。

 上面的csdn例子是跟着教程来学习的,学习之后自己找了一个网址来练手,我找的是qq邮箱,发现qq邮箱中的form表单提交方式为get,不是post。然后用第一种方式来解决的。第二种方式针对form表单提交方式为post的网址。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档