FlareSolverr 是一个 Docker 化的服务,内部使用浏览器解决挑战,并通过 REST API 返回结果。你的爬虫只需向它发送 HTTP 请求,无需管理浏览器。
- 部署 FlareSolverr(使用 Docker)
bash
docker run -d --name flaresolverr -p 8191:8191 ghcr.io/flaresolverr/flaresolverr:latest
- Python 调用脚本(无需额外库,仅 requests)
python
import requests
import json
def get_fuel_surcharge_via_flaresolverr():
flaresolverr_url = 'http://localhost:8191/v1'
# 构造请求体
payload = {
"cmd": "request.get",
"url": "https://www.gls-pakete.de/geschaeftlich-versenden/aktuelles/aufpreis-diesel-und-energie",
"maxTimeout": 60000, # 毫秒
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
response = requests.post(flaresolverr_url, json=payload)
data = response.json()
if data['status'] == 'ok':
html = data['solution']['response']
# 提取费率(同方案一的正则)
import re
match = re.search(r'Der aktuell gültige Prozentsatz beträgt\s*([\d,]+)%', html)
if match:
rate = match.group(1).replace(',', '.')
print(f"最新燃油附加费: {rate}%")
# 你还可以从 data['solution']['cookies'] 获取 cf_clearance 等
return float(rate)
else:
print("未找到费率")
else:
print("FlareSolverr 错误:", data.get('message'))
if __name__ == '__main__':
get_fuel_surcharge_via_flaresolverr()