人教社web逆向遇到了问题,有关阿里云WAF和Python爬虫
本帖最后由 XiaoYangTech 于 2024-11-23 23:00 编辑人教社电子教材,https://book.pep.com.cn/1411001138231/mobile/index.html,首先,直接打开,会4xx,设置referer为https://jc.pep.com.cn/后,正常解析出body,但是我的目标是请求到课本
首先课本后面跟一串随机数字,这串数字浏览器提示jquery请求,已经找到相关的JSON API
其次课本的页数由JS控制,已经跑通,但是使用简短的代码请求固定课本(假设所有请求设置好referer)
import requests
import time
import random
# 图片的基础URL
base_image_url = 'https://book.pep.com.cn/1411001138232/files/mobile/{}.jpg?230907101704'
# 人教社官网教材界面的URL(作为referer)
referer_url = 'https://book.pep.com.cn/'
# 设置请求头,伪装成浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'Referer': referer_url
}
# 从第1张图片开始下载
image_index = 1
while True:
# 构造当前图片的URL
image_url = base_image_url.format(image_index)
# 发送GET请求下载图片
response = requests.get(image_url, headers=headers)
# 检查请求是否成功
if response.status_code == 200:
# 将图片内容写入文件
with open(f'{image_index}.jpg', 'wb') as file:
file.write(response.content)
print(f"图片 {image_index} 下载成功")
time.sleep(random.uniform(1, 1.2))
else:
print(f"图片 {image_index} 下载失败,状态码:{response.status_code}")
break# 停止下载
# 增加图片索引
image_index += 1
下载几页以后就输出16KB的文件,内容为阿里云滑块验证,已经加入随机延时也不行,现在怎么绕过这个烦人的WAF 会不会图片url不需要.jpg后面的部分 一楼是正解,删除URL里的“?230907101704”这些后能正常运行,
不过仍然需要加入判断页码总数,或者用其他判断方式来判定获取所有页码的文件后停止请求,目前下载动作会无限增加请求
页:
[1]