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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
linux查找当前python解释器的位置方法
Feb 20 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
python ftplib模块使用代码实例
Dec 31 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
python实现查找所有程序的安装信息
Feb 18 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
python matplotlib包图像配色方案分享
Mar 14 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
Aug 04 Python
聊聊python在linux下与windows下导入模块的区别说明
Mar 03 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 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
Yii快速入门经典教程
2015/12/28 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
Vue自定义指令详解
2017/07/28 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
python 七种邮件内容发送方法实例
2014/04/22 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
django修改models重建数据库的操作
2020/03/31 Python
python3中sys.argv的实例用法
2020/04/24 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
英国足球店:UK Soccer Shop
2017/11/19 全球购物
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
车间机修工岗位职责
2014/02/28 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
出国留学导师推荐信
2015/03/26 职场文书
开会通知
2015/04/20 职场文书
工程款申请报告
2015/05/15 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers
delete in子查询不走索引问题分析
2022/07/07 MySQL