AliExpress积极抵制自动数据收集——解析器会遇到验证码、IP的临时禁令和授权要求。如果您在监控竞争对手的价格、寻找适合代发货的热门商品或收集市场平台的数据库,没有正确设置的代理,工作就变成了与阻止的持续斗争。
在本指南中,我们将讨论如何选择用于解析AliExpress的代理,设置IP地址的轮换,绕过反机器人系统,并在不被封禁的风险下自动收集产品、价格和评论数据。
为什么AliExpress阻止解析以及它是如何工作的
AliExpress使用多层保护系统来防止自动数据收集。当竞争对手大量复制目录时,平台会损失资金,服务器会因机器人而过载。因此,保护措施不断完善并变得更加激进。
检测解析器的主要方法:
- 来自一个IP的请求频率——如果一分钟内来自一个地址的请求超过50个,系统会自动显示验证码或临时封禁该IP 30-60分钟
- 行为分析——机器人打开页面的速度太快(0.5-1秒),不移动鼠标,不滚动,不点击界面元素
- 缺少cookies——正常用户在访问网站时会积累cookies,而解析器通常使用干净的会话
- 可疑的User-Agent——旧版浏览器、服务器库(Python-requests、curl)、统计中缺少移动设备
- 浏览器指纹——AliExpress收集指纹:屏幕分辨率、时区、已安装的字体、WebGL、Canvas。来自不同IP的相同指纹是机器人的标志
当系统检测到可疑活动时,会应用分级封禁:首先显示验证码,然后对IP进行1-2小时的临时封禁,若重复违规——封禁一天或永久封禁。
重要:AliExpress使用Cloudflare和自己的反机器人系统。他们不仅分析IP,还分析TLS指纹(协议版本、加密顺序)——即使使用代理,如果使用过时的HTTP客户端也可能被封禁。
哪些类型的代理适合解析AliExpress
选择代理类型取决于解析的规模、预算和数据质量要求。我们将讨论每种类型及其实际使用场景。
| 代理类型 | 速度 | 被封禁的风险 | 何时使用 |
|---|---|---|---|
| 数据中心代理 | 高(50-150毫秒) | 高 | 快速解析公共数据,频繁更换IP |
| 住宅代理 | 中等(200-500毫秒) | 低 | 长期解析,带有授权的数据收集 |
| 移动代理 | 中等(300-700毫秒) | 非常低 | 从移动版本解析,绕过严格的封禁 |
用于快速解析的数据中心代理
当需要快速收集大量数据时适用:10000+种商品的价格、类别特征、卖家列表。响应速度50-150毫秒允许每秒从一个IP发出5-10个请求。
使用场景:您在Shopify上有一个代发货商店,需要每天更新5000种来自AliExpress的商品价格。购买50-100个数据中心的IP池,每10-15个请求更换一次IP。在2-3小时内收集所有数据,代理费用为每月50-100美元。
缺点:AliExpress知道数据中心的IP范围,并对此持怀疑态度。需要激进的轮换(每5-10个请求更换IP)和模拟行为(请求之间随机延迟2-5秒)。
用于稳定解析的住宅代理
住宅代理拥有真实家庭用户的IP——提供商将其分配给个人。AliExpress无法区分通过这种代理的请求和普通买家的请求。这将风险降低5-10倍,相比于数据中心的代理。
使用场景:您正在监控自己在Ozon商店的竞争对手价格。需要每天检查200-300种商品,比较AliExpress和俄罗斯供应商的价格。使用10-20个住宅IP,每50-100个请求更换一次。解析需要30-40分钟,几个月没有封禁。
优点:可以在同一个IP上工作更长时间(100-200个请求而不是10-20个),验证码更少,能够进行授权并与卖家的个人账户进行交互。
用于绕过严格封禁的移动代理
移动IP(3G/4G/5G运营商)具有最高的信任度——AliExpress无法封禁整个移动运营商的子网,这将封禁数百万真实买家。一个移动IP可以被数百个设备使用(NAT),因此即使是激进的解析也看起来像是不同用户的活动。
使用场景:您已经在某个地区因住宅IP被封禁,需要紧急收集数据以向客户报告。您购买2-3个移动代理,通过移动版网站(m.aliexpress.com)进行解析。即使是激进的解析(每秒1个请求)也没有封禁。
缺点:比住宅代理贵2-3倍,速度较慢(300-700毫秒延迟),在重新连接运营商时IP可能会更改。
IP轮换设置:更换频率和超时
正确的IP轮换是长期解析而不被封禁的关键。过于频繁的更换看起来可疑并浪费代理,过于稀疏则会导致封禁。
按代理类型推荐的轮换频率
| 代理类型 | 每个IP的请求数 | 请求之间的延迟 | 会话的生命周期 |
|---|---|---|---|
| 数据中心 | 5-15个请求 | 2-5秒 | 1-3分钟 |
| 住宅 | 50-150个请求 | 3-8秒 | 10-30分钟 |
| 移动 | 100-300个请求 | 1-3秒 | 30-60分钟 |
不同任务的轮换策略
1. 快速解析目录(10000+商品每小时)
- 使用100-200个数据中心的IP池
- 每5-10个请求更换一次
- 并行流:10-20个来自不同IP的同时请求
- 请求之间的延迟:1-2秒(模拟快速用户)
- 如果在IP上遇到验证码——将其从池中排除2-3小时
2. 每日价格监控(500-1000商品)
- 使用10-20个住宅IP
- 每50-100个请求更换一次
- 请求之间的延迟为3-5秒
- 在同一个IP上保持cookies
- 模拟行为:偶尔打开主页、类别
3. 带有授权的解析(卖家的个人账户)
- 每个账户一个住宅或移动IP
- 在会话期间不更换(30-60分钟)
- 请求之间的延迟为5-10秒
- 完全模拟浏览器:保存cookies、localStorage、指纹
建议:在延迟中添加随机性。使用2-5秒的范围而不是固定的3秒。这使得请求模式对反机器人系统的预测性降低。
绕过反机器人系统:User-Agent、cookies和指纹
更换IP仅解决了部分问题。AliExpress分析请求和行为的多个参数,以区分机器人和人类。我们将讨论除了代理之外还需要设置的内容。
User-Agent和HTTP头
User-Agent告知服务器哪个浏览器和操作系统正在发出请求。解析器通常使用库的默认值(Python-requests/2.28.0),这些值很容易被识别。
正确设置User-Agent:
- 使用流行浏览器的最新版本:Chrome 120+、Firefox 121+、Safari 17+
- 在轮换IP时更改User-Agent——一个IP不应显示不同的浏览器
- 以40-50%的比例添加移动User-Agent(AliExpress的一半流量来自移动设备)
- 从真实浏览器中复制完整的头部:Accept、Accept-Language、Accept-Encoding、Connection、Upgrade-Insecure-Requests
桌面浏览器的正确头部示例:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
移动设备的示例:
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
处理cookies和会话
AliExpress在首次访问时会设置cookies:会话ID、语言和货币设置、跟踪令牌。没有cookies的解析器看起来可疑——正常用户在浏览网站时会积累它们。
正确处理cookies:
- 在解析之前打开主页并保存所有cookies
- 在同一个IP的所有后续请求中使用这些cookies
- 更换IP时——开始新的会话并使用新的cookies
- 在解析器的不同运行之间保存cookies——这模拟了返回用户
- 每1-2小时更新cookies(重新打开主页)
浏览器指纹和TLS指纹
现代反机器人系统收集浏览器的数字指纹——由几十个参数组合而成,唯一地识别设备。即使来自不同IP,相同的指纹也会显示为机器人。
浏览器指纹包含什么:
- 屏幕分辨率和颜色深度
- 时区和系统语言
- 已安装字体的列表
- WebGL和Canvas指纹(独特的图形渲染方式)
- 音频上下文(AudioContext指纹)
- 浏览器插件的列表
- 对WebRTC、Battery API和其他现代API的支持
简单的HTTP库(requests、axios、curl)没有这些参数——它们在协议层工作,没有渲染。对于严肃的解析,需要使用完整浏览器的工具。
浏览器仿真解决方案:
- Selenium + undetected-chromedriver——启动真实的Chrome并进行修改以绕过检测
- Puppeteer + puppeteer-extra-plugin-stealth——带有插件的Node.js库,用于掩盖自动化的迹象
- Playwright——现代的Selenium替代品,性能更好
- 反检测浏览器——Dolphin Anty、AdsPower、Multilogin(通过界面工作)
重要:TLS指纹(SSL连接的指纹)也会被分析。旧版本的Python和Node.js使用过时的加密套件,这会显示为机器人。使用最新版本的库或curl_cffi来模拟现代浏览器。
解析AliExpress的现成工具
从零开始编写解析器仅对特定任务有意义。对于标准数据收集(商品、价格、评论),有现成的解决方案可以节省数周的开发时间。
带API的商业服务
1. ScraperAPI (scrape.do, scrapingbee.com)
云服务,负责所有与代理和绕过保护相关的工作。您向他们发送AliExpress商品的URL,他们返回包含数据的HTML或JSON。
- 优点:不需要自己的代理,自动绕过验证码,现成的解析器适用于流行网站
- 缺点:在大规模时成本高(每10万个请求起价50美元),依赖第三方服务
- 何时使用:一次性任务、原型设计、小规模(每月不超过1万个商品)
2. Bright Data (luminati.io)
最大的代理提供商,提供自己的解析工具。不仅提供代理,还提供与AliExpress相关的现成数据集(更新的商品数据库)。
- 优点:庞大的IP池(7200万+住宅IP),为企业客户提供基础设施
- 缺点:非常昂贵(每月起价500美元),复杂的计费
- 何时使用:大型企业有预算,持续解析大量数据
开源解决方案
1. Scrapy + scrapy-rotating-proxies
流行的Python解析框架。支持异步请求、自动代理轮换、导出为CSV/JSON/数据库。
在Scrapy中设置代理的示例:
# settings.py
ROTATING_PROXY_LIST = [
'http://user:pass@proxy1.example.com:8000',
'http://user:pass@proxy2.example.com:8000',
'http://user:pass@proxy3.example.com:8000',
]
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.retry.RetryMiddleware': 90,
'scrapy_rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
'scrapy_rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}
# 绕过封禁的设置
ROTATING_PROXY_PAGE_RETRY_TIMES = 5
ROTATING_PROXY_BACKOFF_BASE = 300 # 代理封禁时间(秒)
2. Puppeteer + puppeteer-extra-plugin-stealth
对于具有激进保护的网站(如AliExpress),需要完整的浏览器。Puppeteer通过DevTools协议控制Chrome,stealth插件掩盖自动化的迹象。
// parser.js
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
(async () => {
const browser = await puppeteer.launch({
args: [
'--proxy-server=http://proxy.example.com:8000',
'--no-sandbox',
'--disable-setuid-sandbox'
]
});
const page = await browser.newPage();
// 代理授权
await page.authenticate({
username: 'user',
password: 'pass'
});
// 设置真实的视口
await page.setViewport({
width: 1920,
height: 1080,
deviceScaleFactor: 1
});
// 解析商品
await page.goto('https://www.aliexpress.com/item/1234567890.html', {
waitUntil: 'networkidle2'
});
const productData = await page.evaluate(() => {
return {
title: document.querySelector('.product-title-text')?.innerText,
price: document.querySelector('.product-price-value')?.innerText,
rating: document.querySelector('.overview-rating-average')?.innerText
};
});
console.log(productData);
await browser.close();
})();
非技术用户的桌面应用程序
1. Octoparse
无需编码的可视化解析器——您点击页面元素,程序记住结构并收集数据。内置代理支持和任务调度器。
- 优点:无需编程,适用于动态内容,云版本用于后台工作
- 缺点:免费版有限制(每月10K行),有时无法应对复杂的保护
- 价格:Standard计划每月75美元起
2. ParseHub
类似于Octoparse,界面更简单。由于内置模板适用于流行网站,因此在解析AliExpress时表现良好。
- 优点:免费套餐支持200个页面,简单的代理设置
- 缺点:免费版工作缓慢,缺乏高级功能(API、webhooks)
地理定位:如何解析不同国家的价格
AliExpress根据用户所在国家显示不同的价格、产品和运输条件。如果您从事国际代发货或比较不同市场的价格,则需要来自特定地区的代理。
AliExpress如何确定用户国家
平台使用多个数据源:
- IP地址——主要方式,通过IP的地理位置确定国家
- Cookies——在aep_usuc_f中保存所选国家(可以替换)
- Accept-Language头——浏览器语言,但不是决定性因素
- URL中的货币——参数?currency=USD或子域名(ru.aliexpress.com)
为了可靠地解析特定国家的价格,必须使用来自该地区的代理。仅替换cookies并不总是有效——AliExpress优先考虑IP地理位置。
解析的热门地区及其特点
| 国家 | 价格特点 | 解析目的 |
|---|---|---|
| 美国 | 以美元计价,通常低于欧洲 | 在美国进行代发货,与亚马逊比较 |
| 俄罗斯 | 以卢布计价,考虑关税和增值税 | 与Wildberries、Ozon比较 |
| 德国 | 以欧元计价,快速从欧盟仓库发货 | 在欧洲进行代发货,eBay.de |
| 巴西 | 由于关税价格较高,但需求很大 | 本地电子商务(Mercado Livre) |
通过代理设置地理定位
大多数住宅和移动代理提供商允许通过连接参数或API选择国家(甚至城市)。
通过代理的用户名选择国家的示例:
# 格式:username-country-国家代码
proxy_us = "http://username-country-us:password@gate.example.com:8000"
proxy_de = "http://username-country-de:password@gate.example.com:8000"
proxy_br = "http://username-country-br:password@gate.example.com:8000"
# 解析美国的价格
response_us = requests.get(
"https://www.aliexpress.com/item/1234567890.html",
proxies={"http": proxy_us, "https": proxy_us}
)
# 解析德国的价格
response_de = requests.get(
"https://www.aliexpress.com/item/1234567890.html",
proxies={"http": proxy_de, "https": proxy_de}
)
另外根据地区设置头部:
- Accept-Language: en-US用于美国,de-DE用于德国,pt-BR用于巴西
- 使用相应的子域名:ru.aliexpress.com用于俄罗斯,de.aliexpress.com用于德国
- 检查响应中的货币——如果看到的不是正确的货币,则地理定位未生效
解析中的常见错误及如何避免
即使使用正确的代理和设置,也可能因解析逻辑中的错误而导致封禁。我们将讨论常见问题和解决方案。
错误1:解析过于激进
问题:解析器每分钟从一个IP发出100个请求,试图更快地收集数据。AliExpress将其检测为DDoS攻击并封禁该IP。
解决方案:添加延迟和请求数量限制。对于住宅代理,安全的速度是每个IP每分钟10-20个请求(每3-6秒1个请求)。解析时间更长总比失去代理要好。
错误2:忽视验证码和错误
问题:解析器收到带有验证码的页面,但继续将其解析为普通内容。结果——数据库中有成千上万的空记录。
解决方案:在解析之前检查服务器的响应。如果HTML中包含“captcha”、“Access Denied”或响应代码403/429——停止使用该IP 1-2小时。
def is_blocked(html):
blocked_keywords = ['captcha', 'access denied', 'too many requests']
return any(keyword in html.lower() for keyword in blocked_keywords)
response = requests.get(url, proxies=proxy)
if is_blocked(response.text):
print(f"Proxy {proxy} is blocked, switching...")
# 将代理排除在池外2小时
blocked_proxies[proxy] = time.time() + 7200
continue
错误3:解析过时数据
问题:AliExpress通过CDN(Cloudflare)缓存页面。解析器获取的数据是2-3小时前的,而不是最新的价格。
解决方案:在URL中添加随机参数以绕过缓存,或使用Cache-Control: no-cache头。
import random
import time
# 在URL中添加时间戳以绕过缓存
url = f"https://www.aliexpress.com/item/1234567890.html?_t={int(time.time())}"
# 或者使用头部
headers = {
'Cache-Control': 'no-cache',
'Pragma': 'no-cache'
}
错误4:未正确处理动态内容
问题:AliExpress上的商品价格和特征通过JavaScript在页面加载后加载。简单的HTTP请求会得到一个没有数据的空HTML模板。
解决方案:使用无头浏览器(Selenium、Puppeteer、Playwright),它可以执行JavaScript并等待内容完全加载。或者找到返回JSON数据的API端点——通常可以通过DevTools在网络中找到。
错误5:缺乏日志记录和监控
问题:解析器运行了一周,收集数据,但没有人检查质量。结果发现30%的记录由于网站结构的变化而为空。
解决方案:记录所有重要事件——成功请求、错误、代理封禁、数据结构变化。当错误数量超过10%时设置警报。
启动解析器前的检查清单:
✅ 请求之间的延迟已设置(住宅代理为3-8秒)
✅ IP轮换正常(每个IP不超过50-100个请求)
✅ User-Agent是最新的,并与IP一起更改
✅ Cookies被保存并重复使用
✅ 有验证码和封禁检查
✅ 日志记录和监控已设置
✅ 100个商品的测试运行成功
结论
解析AliExpress需要综合的方法:正确的代理只是解决方案的一部分。需要合理的IP轮换、模拟真实浏览器、处理cookies和指纹,以及持续监控数据质量。过于激进的解析即使使用昂贵的代理也会导致封禁,而正确的设置则可以在几个月内无问题地收集数据。
对于大多数任务(监控竞争对手价格、收集代发货目录、分析趋势),最佳选择是住宅代理,每50-100个请求更换一次。它们在工作速度和AliExpress的信任度之间提供了良好的平衡。如果预算有限且需要高速度——可以从数据中心代理开始,但要准备好更频繁的封禁和需要激进的轮换。
请记住:代理的质量比数量更重要。10个高质量的住宅IP,经过正确设置,将比100个便宜的数据中心代理获得更好的结果,后者的封禁率较高。投资时间设置浏览器仿真、日志记录和监控——这将带来稳定的解析器工作,避免不断出现验证码和封禁问题。