浅析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操作日期和时间的方法
Mar 11 Python
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
Python实现点阵字体读取与转换的方法
Jan 29 Python
使用Django简单编写一个XSS平台的方法步骤
Mar 25 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
python对象销毁实例(垃圾回收)
Jan 16 Python
python 读取.nii格式图像实例
Jul 01 Python
python中判断文件结束符的具体方法
Aug 04 Python
python常见的占位符总结及用法
Jul 02 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
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
JavaScript 语言的递归编程
2010/05/18 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
Vue 过滤器filters及基本用法
2017/12/26 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
python 爬取微信文章
2016/01/30 Python
mac系统安装Python3初体验
2018/01/02 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
python做反被爬保护的方法
2019/07/01 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
使用pandas读取文件的实现
2019/07/31 Python
pygame实现五子棋游戏
2019/10/29 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
自我评价中英文语句
2013/11/30 职场文书
元旦获奖感言
2014/03/08 职场文书
家长寄语大全
2014/04/02 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
运动会5000米加油稿
2015/07/21 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
MySQL系列之六 用户与授权
2021/07/02 MySQL
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android
MySQL事务的隔离级别详情
2022/07/15 MySQL