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之入门(三)序列
May 25 Python
Python使用os模块和fileinput模块来操作文件目录
Jan 19 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
浅谈机器学习需要的了解的十大算法
Dec 15 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 Python
Python如何转换字符串大小写
Jun 04 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
asyncio异步编程之Task对象详解
Mar 13 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
咖啡的传说和历史
2021/03/03 新手入门
E路文章系统PHP
2006/12/11 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
javascript中的if语句使用介绍
2013/11/20 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
Vue+Element实现网页版个人简历系统(推荐)
2019/12/31 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
Python中字符串的格式化方法小结
2016/05/03 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
详解Python 中的容器 collections
2020/08/17 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
美丽乡村建设实施方案
2014/03/23 职场文书
文体活动实施方案
2014/03/27 职场文书
就业协议书范本
2014/10/08 职场文书
北京英文导游词
2015/02/12 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript