You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PythonAnywhere部署亚马逊爬虫遇异常,求User-Agent解决方案

解决PythonAnywhere部署亚马逊爬虫返回"Something Went Wrong"的问题

你的问题核心是亚马逊的反爬机制识别出了PythonAnywhere环境的异常,本地正常是因为个人设备的IP和请求头更贴近真实用户行为。以下是具体解决方法:

1. 更换/随机化User-Agent

不要固定使用个人设备的UA,改用常见浏览器的公开UA,最好维护一个UA池每次随机选一个,避免被标记。示例UA如下:

  • Chrome:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
  • Safari:"Mozilla/5.0 (Macintosh; Intel Mac OS X 14_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
  • Firefox:"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0"

2. 完善请求头字段

只加User-Agent不够,补充其他浏览器常用的请求头,模拟真实访问:

headers = {
    "User-Agent": 随机选择的UA,
    "Accept-Language": "en-US,en;q=0.9",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Referer": "https://www.amazon.com/"
}

3. 处理IP限制问题

PythonAnywhere的共享服务器IP大概率被亚马逊标记了,建议使用付费住宅代理IP(避免用免费代理,稳定性差),在请求中添加代理参数:

proxies = {
    "http": "http://你的代理IP:端口",
    "https": "https://你的代理IP:端口"
}
page = requests.get(URL, headers=headers, proxies=proxies)

4. 添加请求延迟

频繁请求会触发反爬,每次请求前加2-5秒随机延迟:

import time
import random
time.sleep(random.uniform(2, 5))

修改后的示例代码

import requests
from bs4 import BeautifulSoup
import random
import time

# 维护UA池
USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0"
]

URL = link  # 你的亚马逊链接

# 构造请求头
headers = {
    "User-Agent": random.choice(USER_AGENTS),
    "Accept-Language": "en-US,en;q=0.9",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Referer": "https://www.amazon.com/"
}

# 随机延迟
time.sleep(random.uniform(2, 5))

# 发送请求
page = requests.get(URL, headers=headers)

# 检查请求状态
if page.status_code == 200:
    soup1 = BeautifulSoup(page.content, 'html.parser')
    soup2 = BeautifulSoup(soup1.prettify(), "html.parser")
    # 后续数据解析逻辑
else:
    print(f"请求失败,状态码:{page.status_code},响应片段:{page.text[:500]}")

能否在PythonAnywhere解决?

可以,通过上述UA随机化、完善请求头、使用代理、添加延迟的组合方案,基本能绕过亚马逊的反爬检测,解决"Something Went Wrong"的问题。

内容的提问来源于stack exchange,提问作者ahmet yılmaz234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:39:28