Python 官方文档:入门教程 => 点击学习
今天学习了python模拟登陆,然后自己进行一下总结,以csdn登录为例子,浏览器为Chrome 1:直接携带cookie请求url地址 1.1cookie放在headers中 import requests #1.直接携带cookie
今天学习了python模拟登陆,然后自己进行一下总结,以csdn登录为例子,浏览器为Chrome
1:直接携带cookie请求url地址
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值。
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请求登录后的页面
#步骤:
#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的网址。
--结束END--
本文标题: python模拟get/post请求登录
本文链接: https://lsjlt.com/news/190738.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0