浅析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编程实现语音控制电脑
Apr 01 Python
Python实现LRU算法的2种方法
Jun 24 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
May 19 Python
python 请求服务器的实现代码(http请求和https请求)
May 25 Python
python的Jenkins接口调用方式
May 12 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
pycharm 对代码做静态检查操作
Jun 09 Python
浅析Python迭代器的高级用法
Jul 16 Python
python map比for循环快在哪
Sep 21 Python
浅析python 字典嵌套
Sep 29 Python
Python classmethod装饰器原理及用法解析
Oct 17 Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 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
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
php文件系统处理方法小结
2016/05/23 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
JS代码放在head和body中的区别分析
2011/12/01 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
Python字符串详细介绍
2015/05/09 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
ORACLE第二个十问
2013/12/14 面试题
自动化毕业生专业自荐书范文
2014/02/04 职场文书
花店创业计划书范文
2014/02/07 职场文书
奠基仪式主持词
2014/03/20 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
殡葬服务心得体会
2014/09/11 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
捐书仪式主持词
2015/07/04 职场文书