浅析Python3爬虫登录模拟


Posted in Python onFebruary 07, 2018

使用Python爬虫登录系统之后,能够实现的操作就多了很多,下面大致介绍下如何使用Python模拟登录

我们都知道,在前端的加密验证,只要把将加密环境还原出来,便能够很轻易地登录。

首先分析登录的步骤,通过审查元素得知

<input type="button" id="login" name="login" class="login" onclick="Logon();" value="登录">

点击按钮触发Logon()函数,然后查找Logon()函数定义

function Logon() {
}

函数定义内容各有不同,一般里面包含一些加密的操作,一般是使用写好的js加密。我们所需要做的便是重复这些步骤,加密数据。

对于加密,有三种方法:

  1. 如果加密方法是base64之类的,可以直接用Python3的base64库加密;
  2. 手动模仿;
  3. 直接调用js加密,需要先下载PyExecJS,有的电脑需要先安装js的运行环境,比如Node.js。使用方法如下:
newusername = execjs.compile(content).call('base64encode', username)

其中content是js内容,base64encode是方法,username是参数,newusername是加密后的数据。

对于验证码的问题,先介绍下一般的图片验证码,可以请求获取验证码的地址,session之类的数据自己搞定,一般便可以请求成功,可以存到本地手动输入,也可以使用识别的第三方模块,但这个识别效果并不是很好。

然后,便是查看session,cookie。

接下来的操作就是构造请求头headers,这个可以自行去控制台查看或者使用wireshark, fiddler之类的抓包软件查看。

最后便可以请求数据:

使用

s = requests.Session()
s.headers.update(headers)
r = s.post(url, data = params)

或者:

r = requests.get(url, headers = headers, data = params)

headers是你构造的请求头,url是你请求的网站,params是加密的数据。

Python 相关文章推荐
Python类属性与实例属性用法分析
May 09 Python
Python字符串特性及常用字符串方法的简单笔记
Jan 04 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 Python
django admin后台添加导出excel功能示例代码
May 15 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
详解python中*号的用法
Oct 21 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
Python 文件数据读写的具体实现
Jan 24 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
matplotlib 画双轴子图无法显示x轴的解决方法
Jul 27 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
Sep 26 Python
Python实现的三层BP神经网络算法示例
Feb 07 #Python
Python 12306抢火车票脚本
Feb 07 #Python
django限制匿名用户访问及重定向的方法实例
Feb 07 #Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 #Python
Python实现的径向基(RBF)神经网络示例
Feb 06 #Python
python实现淘宝秒杀聚划算抢购自动提醒源码
Jun 23 #Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 #Python
You might like
如何在PHP中使用Oracle数据库(6)
2006/10/09 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
Extjs入门之动态加载树代码
2010/04/09 Javascript
jquery ajax abort()的使用方法
2010/10/28 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
个人诉讼委托书范本
2014/10/17 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL