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实现模拟时钟代码推荐
Nov 08 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
python图像常规操作
Nov 11 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
python获取代理IP的实例分享
May 07 Python
基于python requests库中的代理实例讲解
May 07 Python
基于Python List的赋值方法
Jun 23 Python
Pycharm更换python解释器的方法
Oct 29 Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 Python
python3实现猜数字游戏
Dec 07 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 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
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
JS实现支持多选的遍历下拉列表代码
2015/08/20 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
jQuery查看选中对象HTML代码的方法
2016/06/17 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
老生常谈js数据类型
2017/08/03 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
2020/05/18 Javascript
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
简单了解python单例模式的几种写法
2019/07/01 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
python map比for循环快在哪
2020/09/21 Python
python3中数组逆序输出方法
2020/12/01 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
亚马逊印度站:Amazon.in
2017/10/15 全球购物
文明寄语大全
2014/04/11 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
毕业生实习证明
2014/09/19 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
安全教育主题班会教案
2015/08/12 职场文书
2019个人半年工作总结
2019/06/21 职场文书
详解Nginx 工作原理
2021/03/31 Servers