猿人学第12题(一天搞一个)

前言

爬虫的加密真的有很多种,对于新手的学习非常不友好。本以为自己爬个豆瓣,开个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换成自己的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值