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(菜鸟必看篇)
Jun 10 Python
Python上下文管理器和with块详解
Sep 09 Python
pyqt5 实现多窗口跳转的方法
Jun 19 Python
基于Django框架的权限组件rbac实例讲解
Aug 31 Python
python程序 线程队列queue使用方法解析
Sep 23 Python
Python日志syslog使用原理详解
Feb 18 Python
Python xlrd模块导入过程及常用操作
Jun 10 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
学习Python爬虫的几点建议
Aug 05 Python
python实现感知机模型的示例
Sep 30 Python
Python基于locals返回作用域字典
Oct 17 Python
python的setattr函数实例用法
Dec 16 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实现下载文件的两种方法
2013/07/05 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
HTML Dom与Css控制方法
2010/10/25 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
Vuex 入门教程
2018/01/10 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
详细分析vue响应式原理
2020/06/22 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python3字符串encode与decode的讲解
2019/04/02 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
python 5个实用的技巧
2020/09/27 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
军训自我鉴定怎么写
2014/02/13 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
运动会班级前导词
2015/07/20 职场文书
法制主题班会教案
2015/08/13 职场文书
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS