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制作简单的朴素基数估计器的教程
Apr 01 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
May 25 Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
详解使用Python下载文件的几种方法
Oct 13 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 Python
Python常用类型转换实现代码实例
Jul 28 Python
利用python+request通过接口实现人员通行记录上传功能
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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
php中spl_autoload详解
2014/10/17 PHP
smarty中js的调用方法示例
2014/10/27 PHP
JS 时间显示效果代码
2009/08/23 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
python进阶教程之文本文件的读取和写入
2014/08/29 Python
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
幼儿园教学管理制度
2014/02/04 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
高中开学感言
2015/08/01 职场文书
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers