一、题目

 

二、分析

抓包一看究竟

通过postman模拟请求发现,他返回一段脚本:

通过代码美化&分析后发现:其实这个就是一个蜜罐!!!啥用处也没有!!!

 那么现在我们分析一下Cookie,我们发现存在一个sessionid字段:

 但是为什么使用postman直接请求没返回数据呢?都已经模拟整个头部了!但是很奇怪的是:每次刷新sessionid居然都不变?!!!很有可能是因为缓存的原因!!!其实每次请求sessionid都不一样的!!!

后来仔细看看!!!发现每次请求数据之前都会请求http://match.yuanrenxue.com/logo,有很大可能就是这个原因!!!

并且我们栈跟踪看到request请求的代码,更加坚信这点!!!:

因此我们猜测,先通过post请求logo那个接口,response Set-Cookie字段!!!

 我们现在开始写爬虫代码!!!

 

三、爬虫代码

3.1获取sessionid

import requests
import re

headers = {
    'Accept-Language': 'en-US,en;q=0.9',
    'Referer': 'http://match.yuanrenxue.com/match/3',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'
}
url_session =  'http://match.yuanrenxue.com/logo'
response =  requests.post(url_session, headers=headers)
sessionid = re.findall('(?<=sessionid=).+?(?=;)',response.headers['Set-Cookie'])[0]
print(sessionid)

3.2请求数据

headers_t = {
    'Accept-Language': 'en-US,en;q=0.9',
    'Referer': 'http://match.yuanrenxue.com/match/3',
    'Cookie' : 'sessionid={}'.format(sessionid),
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'
}
url = 'http://match.yuanrenxue.com/api/match/3'
data = requests.get(url, headers=headers_t)
print(data.text)

 3.3汇总

import requests
import re

headers = {
    'Accept-Language': 'en-US,en;q=0.9',
    'Referer': 'http://match.yuanrenxue.com/match/3',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'
}
url_session =  'http://match.yuanrenxue.com/logo'
response =  requests.post(url_session, headers=headers)
sessionid = re.findall('(?<=sessionid=).+?(?=;)',response.headers['Set-Cookie'])[0]
print(sessionid)
headers_t = {
    'Accept-Language': 'en-US,en;q=0.9',
    'Referer': 'http://match.yuanrenxue.com/match/3',
    'Cookie' : 'sessionid={}'.format(sessionid),
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'
}
url = 'http://match.yuanrenxue.com/api/match/3'
data = requests.get(url, headers=headers_t)
print(data.text)

3.4结果

成功!!!

 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐