前言
爬虫的加密真的有很多种,对于新手的学习非常不友好。本以为自己爬个豆瓣,开个IP池就算入门了。谁知道还在河对岸呢!深入下来,某盾,某验,某数…好家伙,啥也不是。课买了不少,听肉丝姐,平哥的课,就像是第一节的高数课。
注重积累,开始动手。
1. 加密方法
1.1 加密寻找
打开dev
浏览器中响应的数据完整,这里是没有加密的。
在看请求的URL
https://match.yuanrenxue.com/api/match/12?page=2&m=eXVhbnJlbnh1ZTI%3D
m=eXVhbnJlbnh1ZTI%3D # 这里就很疑问了
牛p的虫子已经知道这是base64的加密
菜虫子去查看下加载数据的JS,有没有btob()
加载的js在启动器的哪个地方嘞?
在request中(因为你要看请求链接,所以当然在请求中)
1.2 加密内容
点击request后,这不来了嘛btoa,加密的。
window.url = '/api/match/12';
request = function(){
// 点击换页后的操作,先得到翻到了几页
if (window.page){}else {window.page=1}
var list = {
"page": window.page,
"m": btoa('yuanrenxue' + window.page)
};
2. 代码实现
2.1 完整版代码
import requests
import base64
c = []
for i in range(1, 6):
m = 'yuanrenxue' + str(i)
byte_m = m.encode("utf-8")
byte_m1 = base64.b64encode(byte_m)
str_m1 = byte_m1.decode()
url = 'https://match.yuanrenxue.com/api/match/12?page={}&m={}'.format(str(i), str_m1)
headers = {
'user-agent': 'yuanrenxue.project',
'Referer': 'http://match.yuanrenxue.com/match/12',
'cookie':'vaptchaNetway=cn; Hm_lvt_0362c7a08a9a04ccf3a8463c590e1e2f=1645511344; Hm_lvt_c99546cf032aaa5a679230de9a95c7db=1644577619,1645193879,1645447870,1645511367; Hm_lpvt_0362c7a08a9a04ccf3a8463c590e1e2f=1645511389; tk=7735192345593057260; sessionid=3t94f3serlehuk81qsfr9emj4i0wv3ok; Hm_lvt_9bcbda9cbf86757998a2339a0437208e=1645511408; Hm_lpvt_9bcbda9cbf86757998a2339a0437208e=1645511689; Hm_lpvt_c99546cf032aaa5a679230de9a95c7db=1645511714' }
r = requests.get(url, headers=headers).json() ## r:dict
print(r)
b = 0
for a in range(0, 10):
b = r['data'][a]['value'] + b
c.append(b)
print(c)
print(c[0]+c[1]+c[2]+c[3]+c[4])
2.2 python函数总结
字符串----->base64加密
只有变成bytes,才能进行编码的转换,最后在变回字符串来用
m = 'yuanrenxue' + str(i)
byte_m = m.encode("utf-8") type( byte_m) # <class 'bytes'>
byte_m1 = base64.b64encode(byte_m) type( byte_m1) # <class 'bytes'>
str_m1 = byte_m1.decode() type( str_m1) # <class 'str'>
2.3 注意
cookies换成自己的。