最近有朋友在作新闻资讯类的 app 爬虫,也许大多数人都会认为,一个新闻资讯 app 不会有什么反爬吧。python
偏偏相反,当你想爬一条新闻的时候都有请求参数加密,可见如今反爬的严重性。算法
国际惯例先抓包,万幸抓包很是顺利,抓包结果以下:bash
能够看到请求头里面有加密的参数,下面咱们经过反编译来破解这个参数微信
同时用 Python 代码来实现加密,这样咱们才能愉快的爬爬爬!app
反编译以后咱们就根据请求参数来寻找加密的源码,同时须要注意下搜索的技巧。好比同一个参数,若是加上引号会极大的减小咱们的工做量。echarts
能够看到一样一个参数,按后面的搜索结果来找加密源码,会大大减小咱们的工做量。函数
最后在第三行找到了加密参数的出处!ui
其中在执行某某函数的地方能够点进去,结果以下:加密
md5 应该熟悉吧,剩下就是找出被加密的数据了。返回去再看,是三个数据组合的 md5!spa
粗略看一下这个参数是设备号,不作校验,咱们能够直接取其默认值 IMEINNNNNNNNNNNNNNN-IMSI460NNNNNNNNNNNN
再加上时间戳,和一个 key。恰好和咱们抓包里面的请求头那几个参数对应上
分析完以后,固然是先用代码验证一下,若是有问题再返回回来细看。
下面是构造加密参数 signature 的算法
1encrypt = f"{uuid}&&{timestamp}&&f1190aca-d08e-4041-8666-29931cd89dde"
复制代码
其中 udid 是手机设备号和随机数按特定的方式的组合,timestamp 是时间戳。
1signature = hashlib.md5(encrypt.encode("utf-8")).hexdigest()
复制代码
上面就是 signature 的加密 。咱们用代码请求一下来验证结果。
能 GET 到数据,说明用 Python 转换后的加密算法是对的!