浅析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  __getattr__与__setattr__使用方法
Sep 06 Python
简单理解Python中基于生成器的状态机
Apr 13 Python
Python中使用不同编码读写txt文件详解
May 28 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
Python 获取当前所在目录的方法详解
Aug 02 Python
对python中使用requests模块参数编码的不同处理方法
May 18 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 Python
python中sklearn的pipeline模块实例详解
May 21 Python
基于python实现查询ip地址来源
Jun 02 Python
Python logging日志库空间不足问题解决
Sep 14 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
选择PHP作为网站开发语言的原因分享
2012/01/03 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
简单学习vue指令directive
2016/11/03 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
机关作风建设整改方案
2014/10/27 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL