[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第三题: 访问逻辑 - 推心置腹

一、题目

 

二、分析

抓包一看究竟

通过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结果

成功!!!

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值