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之通过Python连接数据库
Oct 28 Python
python轻松查到删除自己的微信好友
Jan 10 Python
使用Python写个小监控
Jan 27 Python
python3.5使用tkinter制作记事本
Jun 20 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
Python代码实现KNN算法
Dec 20 Python
numpy中的delete删除数组整行和整列的实例
May 09 Python
python 实现selenium断言和验证的方法
Feb 13 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
Python random模块的使用示例
Oct 10 Python
用python进行视频剪辑
Nov 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
Python实现的检测web服务器健康状况的小程序
2014/09/17 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
pandas分组聚合详解
2020/04/10 Python
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
车辆维修工自我评价怎么写
2013/09/20 职场文书
如何进行有效的自我评价
2013/09/27 职场文书
建材业务员岗位职责
2013/12/08 职场文书
竞选演讲稿范文
2013/12/28 职场文书
文字自荐书范文
2014/02/10 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
领导班子对照检查材料
2014/09/22 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
鸟的天堂导游词
2015/01/31 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS