步入高级爬虫工程师道路系列(一) 初识网站抓包
作者:黄志成
博客:地址
和小黄一起学习成为高级爬虫工程师~
在学习之前你需要有python的基础. 这里我们不对python的基础进行讲解.
博主是看《零基础入门学习python》和 《跟着老齐学python》这两本书.来入门python的.入门花费了一个月时间.因为python真的很简单。
这是系列第一课,先说下本系列的安排吧.
预计总共会有十五到二十课,从爬虫小白到大鸟的进阶道路,当然我也是在学习的过程中,不是什么大佬.我一直在分享的道路上进步学习.我会将我所知的全部已教程形式分享出去.毫无保留~
课程大纲:
- 了解HTTP协议
-
javascript脚本
-
chrome浏览器 NetWork抓包 及 Sources分析Js 技术
-
接入第三方验证码识别平台
-
多线程并发的脚本
本套课程使用的语言是 Python
关于开发环境我用的是 Windows 7 为什么用Windows操作系统?
选用Windows操作系统是有原因的 在Mac系统中 chrome浏览器的Sources工具搜索功能没有Windows下面的强,最主要的是 Windows下面有很多免费的js调试工具.方便我们调试js脚本.
今天这篇教程就是带大家简单入个门,如果觉得羞涩难懂,不要紧的。后面会很慢慢解释这些知识点.
话不多说了,开始今天的表演了.
今天我们对37wan这个网站进行登录操作.
啊,登录这么简单的事情,也需要代码来解决吗?
登录虽然简单,但是我有成千上万个帐号需要登录,然后去领取游戏礼包这些操作该怎么办呢?
哦.... 的确得用代码实现. 又遇到问题了. 正常的登录逻辑都知道,但是用代码怎么实现!
首先我们得知道,服务器是如何和我们浏览器进行交互的
这里用到了 HTTP 协议 那什么是HTTP协议. 这里让大家去百度学习吧.
如何抓取HTTP的数据呢?这里我们可以直接用chrome浏览器提供的工具(Windows下直接按F12,或者右键点击检查)
可以有一个 NetWork 的选项卡 点击进去就可以进行抓包操作.
来带大家熟悉一下这款工具吧。
我们随便输入一个帐号,然后点击登录.
没错!登录失败了.看network面板出现了三个请求的数据包.
根据常识登录的英语是 login 我们直接看最后一个数据包内容
就是它给我们返回的数据.这是一条ajax请求.我们来看看它的请求内容
我们对请求内容进行分析一下.
time 请求时间戳
uname 帐号
pwd 密码
scode 验证码(我们没有出现所以为空)
pid 不知道
cid 不知道
refer 不知道
pcid 不知道
gid 不知道
sign 签名验证
我们用python构建一条请求去试试这个接口。
import requests
url = 'http://u.api.37.com.cn/account/_login'
body = {
'time':'1525484042',
'uname':'zxhk12',
'pwd' : '123456',
'scode' : '',
'pid' : '1',
'cid' : '10004',
'refer' : '',
'pcid' : '',
'prefer' : '',
'gid' : '1000000',
'sign' : '316b61eafbe3b3de06d3217018997c4d',
}
req = requests.post(url=url,data=body)
print(req.text)
打印结果:
msg的内容怎么是乱码的?我们用 Unicode编码工具转换一下
同样提示我们密码错误.我们用正确的帐号试试
哇 这样就登录成功了? 不应该啊,他们这个接口写的有问题!作为一个后端工程师我看不下去了.sign验证都没用上。本想和大家顺道分享一下如何查找Js加密.我们下节课来说吧.
很多朋友会问我为什么去研究登录的post.可能很多情况下.我们需要的操作的数据是需要登录的,而一般登录是有加密的.破解网站的js算法是很有必要的必修课.同理如果我们要抓App的数据 还得研究App的逆向。这些我们以后会慢慢去了解!
本节教程就到这里了.
写作于:2018年05月04日晚
发表评论