Python3.6下的Requests登录及利用Cookies登录
利用Python中的Requests模块可以实现Post,Get等发送功能,我以登录某网站为例,记录使用Post发送用户名、密码及图形验证码,以及通过Cookies直接登录的内容。
1.利用POST发送用户名、密码及验证码。这里的验证码没有进行识别,只好先读取验证验图片,手动输入。
1 def LoginByPost(): 2 imgUrl='http://***/authcode.php' 3 s=requests.session() 4 res=s.get(imgUrl,stream=True) 5 im=Image.open(BytesIO(res.content)) 6 im.show() 7 code=input() 8 loginUrl='http://***/admin_loginCheck.php' 9 postData={'pname':'admin','password':'***','validateCode':code} 10 rs=s.post(loginUrl,postData)
11 url='http://***/***/admin_honor.php' 12 res=s.get(url)
13 res.encoding='utf-8'
14 print(res.text)
此时,可以看出我们已经成功登录,并输出指定页面的内容。
2.利用Cookies直接登录。无需用户名、密码及验证码。此时,需要先获得登录该网站后的Cookies,一种方法是通过浏览器查看Cookies,另一种方法是利用上面的requests.session获取登录后的Cookies。我们采用第二种方式。
(1)通过requests.session获取Cookies。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def GetCookie(): imgUrl = 'http://***/authcode.php' s = requests.session() print (s.cookies.get_dict()) #先打印一下,此时一般应该是空的。 res = s.get(imgUrl,stream = True ) im = Image. open (BytesIO(res.content)) im.show() code = input () loginUrl = 'http://***/admin_loginCheck.php' postData = { 'pname' : 'admin' , 'password' : '***' , 'validateCode' :code} rs = s.post(loginUrl,postData) c = requests.cookies.RequestsCookieJar() #利用RequestsCookieJar获取 c. set ( 'cookie-name' , 'cookie-value' ) s.cookies.update(c) print (s.cookies.get_dict()) |
(2)利用上面获取的Cookies直接登录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def DirLogin(): s = requests.session() url = 'http://***/***/admin_honor.php' headers = { 'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' , 'Accept-Encoding' : 'gzip, deflate' , 'Accept-Language' : 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2' , 'Cache-Control' : 'max-age=0' , 'Connection' : 'keep-alive' , 'Host' : '***' , 'Referer' : 'http://***/***/admin_index.php' } cookies = { 'PHPSESSID' : 'cnguud4r1hmn3passs906odp21' } #这里就是利用上面的函数获得的Cookies rs = s.get(url,headers = headers,cookies = cookies,verify = False ) rs.encoding = 'utf-8' print (rs.text) |
此时,可以直接查看所需要页面的内容。
说明:然并卵,你会发现,通过Cookies直接登录,有时好用,有时无用。原因在于此网站是通过服务器的Session对客户进行判断,而Session在服务器端往往会设置会话期限,如果到了时间,服务器会把这个Session删除,这时,你还得再次利用第一个函数进行Cookie的获取。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?