在没有代理的情况下抓取亚马逊是一场注定失败的战斗。 您很快就会遇到IP禁止、无尽的验证码,并在收集任何有用信息之前被限速。 亚马逊的反机器人系统是互联网上最强大的。
为了保持低调,代理是必不可少的。 在这篇文章中,我们将向您展示如何有效地使用 Nstproxy的住宅代理 来抓取亚马逊——一种可靠的提取产品数据而不被阻止的方法。
为什么您需要代理来抓取亚马逊
亚马逊采用了激进的反抓取技术:
- IP跟踪与限速
- 机器人行为检测
- 地理屏蔽
- JavaScript挑战与验证码
不使用代理,从单一IP发送多个请求会很快被标记。
住宅代理,就像来自Nstproxy的那样,可以模拟来自真实设备和ISP的真实用户流量,使您的抓取程序看起来是合法的。
为什么选择Nstproxy住宅代理?
Nstproxy提供:
- 9000万+ IP来自195+个国家
- SOCKS5和HTTP/HTTPS支持
- 会话控制,支持粘性或轮换IP
- 优化的网关路由(美国、欧洲、亚太)
✅ 理想用于大规模亚马逊抓取、价格监控和竞争对手研究。
最适合亚马逊的代理类型:轮换住宅代理
代理类型比较:
| 代理类型 | 优点 | 缺点 |
|---|---|---|
| 数据中心 | 快速 | 容易被封锁 |
| 移动 | 极为匿名 | 昂贵 |
| 住宅 | 高匿名性,价格合理,有效 | 最适合亚马逊使用的最佳平衡 |
🔹 对于亚马逊抓取,轮换住宅代理是最有效的——它们提供来自真实用户的真实IP,并定期轮换以避免被检测。
使用Python设置Nstproxy
购买代理计划后:
- 转到仪表板中的代理设置
- 从代码语言选项中选择Python
- 复制带有您的凭据的现成代码段
以下是如何在Python抓取程序中使用Nstproxy住宅代理与requests库:

username = '您的用户名' password = '您的密码' host = 'gate.nstproxy.io' port = '24125' proxy = f'http://{username}:{password}@{host}
完整的亚马逊抓取脚本示例
这是针对https://www.amazon.com/s?k=apple的整个亚马逊抓取脚本:
import requests from urllib.parse import urljoin from bs4 import BeautifulSoup import pandas as pd username = 'YOUR Nstproxy Username' password = 'Your password' host = 'gate.nstproxy.io' port = '24125' proxy = f'http://{username}:{password}@{host}:{port}' proxies = { "http": proxy, "https": proxy } custom_headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36', 'Accept-Language': 'da, en-gb, en', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.7', 'Referer': 'https://www.google.com/' } def parse_listing(listing_url, visited_urls, current_page=1, max_pages=2): resp = requests.get( listing_url, headers=custom_headers, proxies=proxies ) print(resp.status_code) soup_search = BeautifulSoup(resp.text, 'lxml') link_elements = soup_search.select( '[data-cy="title-recipe"] > a.a-link-normal' ) page_data = [] for link in link_elements: full_url = urljoin(listing_url, link.attrs.get('href')) if full_url not in visited_urls: visited_urls.add(full_url) print(f'Scraping product from {full_url[:100]}', flush=True) product_info = get_product_info(full_url) if product_info: page_data.append(product_info) time.sleep(random.uniform(3, 7)) next_page_el = soup_search.select_one('a.s-pagination-next') if next_page_el and current_page < max_pages: next_page_url = next_page_el.attrs.get('href') next_page_url = urljoin(listing_url, next_page_url) print( f'Scraping next page: {next_page_url}' f'(Page {current_page + 1} of {max_pages})', flush=True ) page_data += parse_listing( next_page_url, visited_urls, current_page + 1, max_pages ) return page_data def get_product_info(url): resp = requests.get(url, headers=custom_headers, proxies=proxies) if resp.status_code != 200: print(f'Error in getting webpage: {url}') return None soup = BeautifulSoup(resp.text, 'lxml') title_element = soup.select_one('#productTitle') title = title_element.text.strip() if title_element else None price_e = soup.select_one('#corePrice_feature_div span.a-offscreen') price = price_e.text if price_e else None rating_element = soup.select_one('#acrPopover') rating_text = rating_element.attrs.get('title') if rating_element else None rating = rating_text.replace('out of 5 stars', '') if rating_text else None image_element = soup.select_one('#landingImage') image = image_element.attrs.get('src') if image_element else None description_element = soup.select_one( '#productDescription, #feature-bullets > ul' ) description = ( description_element.text.strip() if description_element else None ) return { 'title': title, 'price': price, 'rating': rating, 'image': image, 'description': description, 'url': url } def main(): visited_urls = set() search_url = 'https://www.amazon.com/s?k=apple' data = parse_listing(search_url, visited_urls) df = pd.DataFrame(data) df.to_csv('apple.csv', index=False) if __name__ == '__main__': main()
顺利抓取亚马逊的提示
- 轮换用户代理 — 避免反复使用同一个
- 明智使用会话 — 通过
sessionDuration实现粘性(例如,登录) - 随机延迟 —
time.sleep(random.uniform(1, 3)) - 错误处理 — 在
503/429时进行重试,采用指数回退 - CAPTCHA 检测 — 被触发时切换到新会话
挑战与解决方案
| 挑战 | 解决方案 |
|---|---|
| IP阻塞 | 使用 Nstproxy 轮换住宅代理 |
| 速率限制 | 添加延迟并轮换IP和头部 |
| 结构变化 | 手动检查DOM,并相应调整选择器 |
最后的想法
抓取亚马逊很困难 — 但并非不可能。 通过 Nstproxy 的住宅代理,轮换 IP 和现实的浏览行为,您可以大规模收集高价值的产品数据而不被封锁。
🚀 立即开始您的 Nstproxy 试用 — 免费 5GB 需要集成帮助?我们随时为您提供协助。



