Python模拟登录requests.Session应用详解


Posted in Python onNovember 17, 2020

最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块。

注:本文仅为交流学习所用。

登录特点:明文传输,有特殊标志数据

会话对象requests.Session能够跨请求地保持某些参数,比如cookies,即在同一个Session实例发出的所有请求都保持同一个cookies,而requests模块每次会自动处理cookies,这样就很方便地处理登录时的cookies问题。在cookies的处理上会话对象一句话可以顶过好几句urllib模块下的操作。即相当于urllib中的:

cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
urllib.request.install_opener(opener)

模拟登录V站

本篇文章的任务是利用request.Session模拟登录V2EX(http://www.v2ex.com/)这个网站,即V站。

工具: Python 3.5,BeautifulSoup模块,requests模块,Chrome

这个网站登录的时候抓到的数据如下:

Python模拟登录requests.Session应用详解

其中用户名(u)、密码(p)都是明文传输的,很方便。once的话从分析登录URL:http://www.v2ex.com/signin 的源文件(下图)可以看出,应该是每次登录的特有数据,我们需要提前把它抓出来再放到Form Data里面POST给网站。

Python模拟登录requests.Session应用详解

抓出来还是老方法,用BeautifulSoup神器即可。这里又学到一种抓标签里面元素的方法,比如抓上面的"value",用soup.find('input',{'name':'once'})['value']即可

即抓取含有 name="once"的input标签中的value对应的值。

于是构建postData,然后POST。

怎么显示登录成功呢?这里通过访问http://www.v2ex.com/settings 即可,因为这个网址没有登录是看不了的:

Python模拟登录requests.Session应用详解

经过上面的分析,写出源代码(参考了alexkh的代码):

import requests
from bs4 import BeautifulSoup
 
url = "http://www.v2ex.com/signin"
UA = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.13 Safari/537.36"
 
header = { "User-Agent" : UA,
      "Referer": "http://www.v2ex.com/signin"
      }
 
v2ex_session = requests.Session()
f = v2ex_session.get(url,headers=header)
 
soup = BeautifulSoup(f.content,"html.parser")
once = soup.find('input',{'name':'once'})['value']
print(once)
 
postData = { 'u': 'whatbeg',
       'p': '*****',
       'once': once,
       'next': '/'
       }
 
v2ex_session.post(url,
         data = postData,
         headers = header)
 
f = v2ex_session.get('http://www.v2ex.com/settings',headers=header)
print(f.content.decode())

然后运行发现成功登录:

Python模拟登录requests.Session应用详解

上面趴下来的网页源代码即为http://www.v2ex.com/settings的代码。这里once为91279.

Python模拟登录requests.Session应用详解

至此,登录成功。

到此这篇关于Python模拟登录requests.Session应用详解的文章就介绍到这了,更多相关Python模拟登录requests.Session内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python标准库os.path包、glob包使用实例
Nov 25 Python
Android分包MultiDex策略详解
Oct 30 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
python实现机器人行走效果
Jan 29 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
python tkinter组件使用详解
Sep 16 Python
python程序 线程队列queue使用方法解析
Sep 23 Python
pytorch多GPU并行运算的实现
Sep 27 Python
Python利用机器学习算法实现垃圾邮件的识别
Jun 28 Python
关于python scrapy中添加cookie踩坑记录
Nov 17 #Python
python中strip(),lstrip(),rstrip()函数的使用讲解
Nov 17 #Python
PyTorch预训练Bert模型的示例
Nov 17 #Python
python 下载文件的多种方法汇总
Nov 17 #Python
python跨文件使用全局变量的实现
Nov 17 #Python
Python中logging日志的四个等级和使用
Nov 17 #Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 #Python
You might like
PHP基础知识回顾
2012/08/16 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
vue登录注册实例详解
2019/09/14 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
[05:09]DOTA2-DPC中国联赛2月22日Recap集锦
2021/03/11 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
Python Django 命名空间模式的实现
2019/08/09 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
商务英语大学生职业生涯规划书范文
2014/01/01 职场文书
委托协议书范本
2014/04/22 职场文书
企业党员个人自我评价
2014/09/20 职场文书
党员自评材料范文
2014/12/17 职场文书
滴水洞导游词
2015/02/10 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript