猿人学对抗赛系列文章目录
我又来啦,今天玩猿人学的第13题,不废话,直接F12打开谷歌浏览器的调试模式查看数据接口,这题题目是cookie反爬,我们就直接看cookie里面有什么,建议用无痕浏览模式打开,cookie会简洁很多,可以直接看出来,yuanrenxue_cookie就是我们这次需要破解的参数
到这里有些同学就直接按照12题的老办法进去Initiator里去点击request了,但是想法很美好,现实很残酷,进去之后啥也没有,别急,这道题的参数寻找和12题不一样,网址的参数每个数据接口都有,但是cookie可不一定了,cookie很有可能是其他的地方生成的,这里我们用fiddler来抓包,因为谷歌浏览器的调试模式有些东西是不显示出来的(没有fiddler的,直接百度就好,一搜一大把的安装教程)
打开fiddler,刷新页面,查看响应,发现在主页加载之前有一个奇怪的请求,点击进去查看响应的内容,返回了一段js代码,这就是谷歌浏览器显示不出的内容了
复制出来看见document.cookie,又破案了( •̀ ω •́ )✧,cookie的赋值是一段字符相加的结果,直接复制document.cookie赋值的那一句代码,进到谷歌浏览器的console里黏贴执行,与数据接口的cookie对比一下,不得了!!!一模一样!!!,
接下就是敲代码的时候了,先请求前面的这个接口获取内容再正则匹配一下,就好了,代码如下:
import io
import re
import requests
from lxml import html
import sys
import json
num = 0
etree = html.etree
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')
session = requests.Session()
session.keep_alive = False
def gg(u):
global num
kv = {'User-Agent': 'yuanrenxue.project', 'cookie': 'sessionid=自己的sessionid'}
r = session.get(u, headers=kv)
rw = re.compile(r"'(.?)'")
g = rw.findall(r.text)
ck = ''
for i in g:
ck += i
k2 = {'User-Agent': 'yuanrenxue.project'}
session.cookies.set(ck.split('=')[0], ck.split('=')[1]) #设置cookie
print(session.cookies)
for i in range(1, 6):
t2(k2, 'https://match.yuanrenxue.com/api/match/13?page=' + str(i))
print(num)
def t2(k, u1):
global num
r = session.get(u1, headers=k)
l = json.loads(r.text)
for i in l['data']:
# print(i['value'])
num += i['value']
gg('https://match.yuanrenxue.com/match/13')
总结
13题还是非常简单的,只是对于新手来说找参数的时候有点操蛋,对于一些文章中的知识名词啥的不是很了解的话可以看看我的这篇文章:
js逆向学习必备技巧 (还没写完(~ ̄▽ ̄)~)