未加星标

python模拟登陆详解

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二04 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏
python模拟登陆详解

一点号python开源学院10小时前

登陆网页,我们要了解下http协议,这里简单介绍一下,以便后面进行模拟登陆。

http协议属于应用层的面向对象的协议主要功能是用来传输网页,所以传输网页有他特定的规则我们了解它的规则 实现多线程批量注册、投票、签到、发帖、都是可行的、网页除了Flash模块不能操作以外,其他Dom网页元素节点都可以操作。

url地址解析:http://host[":"port][abs_path]

第一个host是主机地址,由于域名解析主机的ip,所以输入域名的时候也能找的到服务器

port是端口号,浏览器默认80端口所以省略 如:baidu.com:80

abs_path:是文件的路径 类似于我们访问文件夹一样

有时候我们会在后面还看到 ? 问号后面有一些东西然后 = 等号来传值 这个是传递给服务器的参数、比如 访问一篇文章总要知道那篇文章的ID一样 例如以下:百度后面传递了id属性 值为utf-8

https://www.baidu.com/s ? ie = utf-8

url我们了解了之后,我们来说下 用户【浏览器】请求服务器

它请求方式有很多比如我们经常说的 get 和 post 其他后续用不到。

get简单来说就是获取属性 具体获取什么数据需要通过url和问号后面传递的参数来定

post也是获取数据,但是可以传递数据到服务器,比如传递账号、密码、验证码、这些。

两则还有一点不同的是:get传递参数的时候是在url后面添加问号来传递,后台服务器接受。Django 可以 看不到问号传递参数post是隐式提交给服务器,也就是说用户浏览器是看不到的,而且再为了一些安全,有的密码还会通过js一些算法加密,这是后话。

协议头(请求头)在请求之后呢,他有一些特定的请求头数据。


python模拟登陆详解

这是一个简单的头信息,在User-Agent中可以看到有 系统版本 浏览器版本及核心还有Accept-Encoding中 后面使用的gzip请求压缩网页返回,一般写代码里会把他删掉,避免返回压缩后的网页,还要解压缩ps:有的会自解压缩

了解这些之后呢,我们可以开始实战了。

分析网页

拿一个简单的网页来练手:discuzphp开源论坛

分析:我用的谷歌浏览器,用自带的F12中的Network抓包就可以。

我get请求了首页以及登陆之后抓了一些数据包如下:

POST登陆的数据包:


python模拟登陆详解

中间请求头我们不用管看最后一行post提交的数据

username 账号 我登陆前输入的账号

password 密码 ========= a123456789

还有一些参数我们不管

POST成功返回响应头中有set-cookie 最后GET首页中添加这些Cookies来完成登陆,我们来写入python试一下

python模拟登陆__PHP开源论坛

在这里我使用的第三方模块requests

pip install requests

通过cmd 中敲入pip 安装这个模块


python模拟登陆详解

为了避免卡死shell 我们可以使用ipython shell来进行打印,发现还是显示不全,我们还是写到文件吧

写到文件


python模拟登陆详解

我们找到d:/discuz.txt中有一段


python模拟登陆详解

以及 积分:0 这些获取之后呢,我们可以写GUI界面来操控有兴趣的条友可以去研究下Tk 喜欢python可以加下330637182 群一起交流。

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

分页:12
转载请注明
本文标题:python模拟登陆详解
本站链接:http://www.codesec.net/view/520137.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(73)