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 相关文章推荐
利用ctypes提高Python的执行速度
Sep 09 Python
python访问抓取网页常用命令总结
Apr 11 Python
Python实现识别手写数字大纲
Jan 29 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
python调用百度REST API实现语音识别
Aug 30 Python
计算机二级python学习教程(1) 教大家如何学习python
May 16 Python
PyQt5重写QComboBox的鼠标点击事件方法
Jun 25 Python
python实现数据分析与建模
Jul 11 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
用python查找统一局域网下ip对应的mac地址
Jan 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
apache中为php 设置虚拟目录
2014/12/17 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
2013/11/18 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
JavaScript 跨域之POST实现方法
2018/05/07 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
python实现挑选出来100以内的质数
2015/03/24 Python
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
建国大业电影观后感
2015/06/01 职场文书
坚持不是死撑,更重要的是心态
2019/08/19 职场文书
Python开发五子棋小游戏
2022/04/28 Python