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 相关文章推荐
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
Django应用程序中如何发送电子邮件详解
Feb 04 Python
Python中创建二维数组
Oct 17 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
Python+OpenCV采集本地摄像头的视频
Apr 25 Python
Python实现带下标索引的遍历操作示例
May 30 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
Jun 19 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
python 创建一维的0向量实例
Dec 02 Python
tensorflow如何继续训练之前保存的模型实例
Jan 21 Python
python构造IP报文实例
May 05 Python
Python二元算术运算常用方法解析
Sep 15 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
我用php+mysql写的留言本
2006/10/09 PHP
php学习之数据类型之间的转换介绍
2011/06/09 PHP
javascript定义函数的方法
2010/12/06 Javascript
jquery异步调用页面后台方法‏(asp.net)
2011/03/01 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
python进阶教程之循环对象
2014/08/30 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
python3中eval函数用法使用简介
2019/08/02 Python
python自动识别文本编码格式代码
2019/12/26 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
应届毕业生求职信
2013/11/30 职场文书
心得体会范文
2014/01/04 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
文明社区申报材料
2014/08/21 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书