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实现排序算法
Feb 14 Python
Python实现简单的语音识别系统
Dec 13 Python
python中kmeans聚类实现代码
Feb 23 Python
Python3.6简单反射操作示例
Jun 14 Python
Django实现分页功能
Jul 02 Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 Python
python实现微信防撤回神器
Apr 29 Python
django实现支付宝支付实例讲解
Oct 17 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
python新手学习可变和不可变对象
Jun 11 Python
python写文件时覆盖原来的实例方法
Jul 22 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 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作的文本留言本的例子(一)
2006/10/09 PHP
php 深入理解strtotime函数的使用详解
2013/05/23 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
js的touch事件的实际引用
2014/10/13 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
Angular5.1新功能分享
2017/12/21 Javascript
详解如何在vue项目中引入elementUI组件
2018/02/11 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
Python json模块使用实例
2015/04/11 Python
Django与JS交互的示例代码
2017/08/23 Python
理论讲解python多进程并发编程
2018/02/09 Python
对python 通过ssh访问数据库的实例详解
2019/02/19 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
Python如何实现转换URL详解
2019/07/02 Python
python pillow模块使用方法详解
2019/08/30 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
python time()的实例用法
2020/11/03 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
IRO美国官网:法国服装品牌
2018/03/06 全球购物
预防传染病方案
2014/06/14 职场文书
假期安全教育广播稿
2014/10/04 职场文书
高三数学教学反思
2016/02/18 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python