AliExpress 是网络上最大的电商平台之一,其产品、价格和搜索数据对于市场调研、竞争对手价格追踪或构建选品工具来说都具有实际价值。问题在于,AliExpress 对自动化流量的防御非常严密:以任何实质性的访问量从单个数据中心 IP 发起请求,你收集到的是限速、CAPTCHA 和 IP 封禁,而不是数据。本指南介绍如何使用 Python 进行 AliExpress 代理抓取,通过将请求路由到 Crawlbase Smart AI Proxy 来保持采集的匿名性和畅通无阻。
整个演示范围限定在公开数据:任何人在不登录的情况下都能在搜索结果页看到的产品标题、价格、图片、配送信息和销量。不涉及用户账户、需要登录的内容、结账操作或个人数据。靠近文末的法律部分并非套话,请在将此工具指向生产体量之前仔细阅读。
为什么抓取 AliExpress 需要代理
AliExpress 和大多数大型电商平台一样,将自动化流量视为威胁。三种防御手段会阻挡不经思考的爬虫,而轮换代理正是能同时化解这三种威胁的工具。
IP 封锁。从同一个地址发送过多请求,AliExpress 就会对其限速或直接封禁。单个静态 IP 根本无法维持有意义的抓取量。
CAPTCHA。当流量看起来像脚本化操作时,AliExpress 会用 CAPTCHA 向其发起质询,以区分人类和机器人。被标记的 IP 会持续遭到质询,直到你切换到另一个 IP 为止。
机器人检测。除了原始请求数量,平台还会对请求模式进行指纹识别以发现自动化行为。来自同一来源的可预测、高频流量是最容易被标记的模式。
一批轮换住宅代理能够同时解答这三个问题:每个请求可以从不同的真实用户 IP 发出,这样单个地址既不会触发速率限制,也不会陷入 CAPTCHA 困境,更不会因此显眼地暴露为机器人。你可以自己构建这样的代理池,但采购健康的住宅 IP 并维持轮换逻辑运转是工作的大头。Crawlbase Smart AI Proxy 将这一切整合到一个你可以将现有 HTTP 客户端直接指向的单一端点。
Crawlbase Smart AI Proxy 的作用
Smart AI Proxy是位于 Crawlbase 全量爬取基础设施前的单一代理端点。你不需要围绕新 API 重写代码,只需设置一个代理 URL,你的普通 requests 调用就会通过它流转。在这个端点背后,它完成了手工搭建代理技术栈所需的工作:
- 自动 IP 轮换。来源 IP 在请求之间不断变化,从庞大的住宅和数据中心地址池中抽取,从而绕过速率限制和封禁,无需自己管理轮换逻辑。其机制与任何轮换住宅代理配置相同,只是在服务端处理。
- 流量路由与负载均衡。请求被分散到众多代理服务器上,避免任何单个服务器过载,在长时间运行中保持稳定的吞吐量。
- 转发至 Crawling API。Smart AI Proxy 将你的请求传递给 Crawling API,因此你无需直接调用该 API 就能继承其大部分能力,包括服务端渲染和下面介绍的参数控制。
对于 AliExpress 而言,实际效果是你不必再与反爬虫层较量。你的爬虫向单个代理 URL 发送普通请求,代理处理 IP、轮换和路由,让页面正常返回而不是被封锁。
两者都能访问相同的爬取后端,区别在于集成方式。Smart AI Proxy 是一个代理端点,可以直接嵌入任何支持 HTTP 代理的工具,现有代码无需改动即可使用。Crawling API 是一个 HTTP API,适合在编写新代码时直接调用。本指南使用 Smart AI Proxy,因为 AliExpress 爬虫是一个标准的 requests 脚本。
用一条 curl 命令测试代理
在编写任何 Python 代码之前,先用一条命令确认代理是否正常工作。首先创建 Crawlbase 账户并打开你的 Smart AI Proxy 控制台,复制你的代理认证 token。然后运行以下命令,将 USER_TOKEN 替换为该 token。
curl -x "http://[email protected]:8012" -k "https://www.aliexpress.com/w/wholesale-macbook-pro.html"
这里发生了几件事。-x 标志将请求路由到 Smart AI Proxy,它监听 smartproxy.crawlbase.com 的 8012 端口。你的 token 是代理 URL 中的用户名,密码留空。-k 标志告诉 curl 跳过 SSL 证书验证,这在通过代理隧道传输 HTTPS 时是必需的;没有它,curl 与代理之间的握手可能会失败。成功后你会收到 AliExpress 搜索页面的原始 HTML。
添加参数来精细调整请求
由于 Smart AI Proxy 会转发到 Crawling API,你可以发送 Crawling API 参数,方式是通过一个名为 CrawlbaseAPI-Parameters 的特殊请求头。这样你就能精确告诉代理如何处理请求,而不是接受默认行为。
对于这项工作最有用的参数是 scraper=aliexpress-serp。它不是返回原始 HTML,而是运行 Crawlbase 内置的 AliExpress 搜索结果解析器,直接返回整洁的结构化 JSON,让你完全省去编写和维护选择器的工作。
curl -H "CrawlbaseAPI-Parameters: scraper=aliexpress-serp" \ -x "http://[email protected]:8012" -k \ "https://www.aliexpress.com/w/wholesale-macbook-pro.html"
这一个请求头就将杂乱的 HTML 转化为有组织的产品数据。稍后我们将在 Python 中使用同一参数。
搭建 Python 项目
你需要安装 Python 3。如果这是你第一次安装,请从 python.org 获取并确认版本。然后创建项目文件夹并添加脚本文件。
python --version mkdir aliexpress-scraper && cd aliexpress-scraper touch aliexpress.py
你只需要一个第三方包。requests 库处理 HTTP 并原生支持代理,而 json 随 Python 标准库附带,无需安装。
pip install requests
通过 Smart AI Proxy 获取页面
在解析任何内容之前,先从 Python 中确认代理可以正常工作。打开 aliexpress.py 并添加以下代码,将其中的 token 替换为你自己的。该模式与 curl 命令一致:你的 token 加上空密码构成代理凭据,http 和 https 两种协议都通过同一个 Smart AI Proxy URL 路由。
import requests username = "USER_TOKEN" password = "" proxy_auth = f"{username}:{password}" url = "https://www.aliexpress.com/w/wholesale-macbook-pro.html" proxy_url = f"http://{proxy_auth}@smartproxy.crawlbase.com:8012" proxies = {"http": proxy_url, "https": proxy_url} response = requests.get(url=url, proxies=proxies, verify=False) print("Status:", response.status_code) print(response.text[:500])
有三个细节需要注意。proxies 字典告诉 requests 将每个请求都通过 Smart AI Proxy 发送。verify=False 参数禁用 SSL 验证,原因与 curl 中的 -k 相同;对于长期运行的生产服务,你应该妥善处理证书,而不是直接禁用检查。用 python aliexpress.py 运行,你应该会看到 200 状态码和前几百个字符的 AliExpress HTML,这表明代理正在正确路由请求。
AliExpress 对爬虫形态的流量封锁很快。Smart AI Proxy 是一个单一端点,你将 requests 调用指向它即可:它在服务端轮换住宅和数据中心 IP,处理路由,并转发到 Crawling API,使 CAPTCHA 和 IP 封禁不再是你的问题。将其直接嵌入你已有的代码,先在免费套餐上将其指向一个公开页面试试。
将结果解析为结构化 JSON
原始 HTML 难以处理。与其为随时可能变动的 AliExpress 标记编写 CSS 选择器,不如通过在请求头中发送 scraper=aliexpress-serp 参数来使用内置解析器。代理返回整洁的 JSON 而不是 HTML,json.loads 将其转化为你可以直接操作的 Python 字典。
import requests import json username = "USER_TOKEN" password = "" proxy_auth = f"{username}:{password}" url = "https://www.aliexpress.com/w/wholesale-macbook-pro.html" proxy_url = f"http://{proxy_auth}@smartproxy.crawlbase.com:8012" proxies = {"http": proxy_url, "https": proxy_url} headers = {"CrawlbaseAPI-Parameters": "scraper=aliexpress-serp"} response = requests.get(url=url, proxies=proxies, headers=headers, verify=False) data = json.loads(response.text) print(json.dumps(data, indent=4))
响应是一个 JSON 对象,其中的 body.products 数组对每个商品列表都包含一条条目。精简后的样本如下所示:
{ "original_status": 200, "cb_status": 200, "body": { "products": [ { "title": "5 In 1 USB C Hub Type C to 4K HD Adapter for Macbook Pro", "price": { "current": "$1.27" }, "url": "https://www.aliexpress.com/item/1005005653517644.html", "image": "https://ae04.alicdn.com/kf/Sbffa8b7a90564cff8.jpg", "shippingMessage": "Free shipping", "soldCount": 207 } ], "relatedSearches": [] } }
每个产品都包含你真正需要用于研究的字段:标题、当前价格、产品 URL、图片、配送信息和销量。解析器还返回一个 relatedSearches 列表,你可以用它来发现相邻的搜索词。
AliExpress 搜索结果位于 /w/wholesale-<keyword>.html。将该路径中的关键词替换为其他词即可抓取不同的查询,如果你想获取特定地区的价格和配送信息,可以使用地区子域名(例如某个国家专属的子域名)。多词关键词请用连字符连接,以保持 slug 对 URL 安全。
将数据保存到 JSON 文件
在迭代调试时将结果打印到控制台是可以的,但你需要将结果保存到磁盘。添加几行代码将解析后的字典写入文件,以便稍后分析或载入数据管道。
import requests import json username = "USER_TOKEN" password = "" proxy_auth = f"{username}:{password}" url = "https://www.aliexpress.com/w/wholesale-macbook-pro.html" proxy_url = f"http://{proxy_auth}@smartproxy.crawlbase.com:8012" proxies = {"http": proxy_url, "https": proxy_url} headers = {"CrawlbaseAPI-Parameters": "scraper=aliexpress-serp"} response = requests.get(url=url, proxies=proxies, headers=headers, verify=False) data = json.loads(response.text) with open("scraped_data.json", "w") as json_file: json.dump(data, json_file, indent=4) print("Saved scraped_data.json")
新增的两行完成了全部工作:open(...) 以写入模式创建 scraped_data.json,json.dump 将解析后的字典序列化写入其中。这就是一个完整可运行的 AliExpress 爬虫:它通过轮换代理获取搜索页面,将其解析为结构化数据,并将结果持久化保存。
将爬虫扩展到更大规模
抓取一个搜索页面只是演示。真正的任务需要跨多个关键词或页面运行,并且必须保持可靠性,同时在网站的容忍范围内。以下一些实践可以让脚本从单次运行升级为生产任务。
-
循环遍历多个查询。将获取逻辑封装成接受关键词的函数,从关键词中构建
/w/wholesale-<keyword>.htmlURL,然后遍历搜索词列表逐一收集数据。 -
引入并发。逐一获取 URL 速度很慢。用
concurrent.futures并行发送请求,或者切换到asyncio和aiohttp以获得更高的吞吐量。Smart AI Proxy 对每个请求轮换 IP,因此并发不会将负载集中到单个地址上。 -
优雅地处理错误。用 try/except 包裹每个请求,在解析前检查
response.status_code,并为瞬时性失败添加带退避策略的重试逻辑,这样一个失败的响应就不会让整次运行崩溃。 - 大规模使用真正的存储。平面 JSON 文件在开始时没问题,但对于大型数据集,应将数据行写入具有适当索引的数据库,如 PostgreSQL 或 MySQL。
IP 轮换是你不需要自己构建的一个环节,因为 Smart AI Proxy 会为每个请求从其池子中提供新鲜的 IP。在大规模下保持不被封锁的更广泛操作手册可参考如何在不被封锁的情况下爬取网站。
抓取 AliExpress 是否合法?
抓取 AliExpress 是否被允许,取决于平台的服务条款、你所在的司法管辖区以及你对数据的使用方式。AliExpress 的条款限制自动化访问,因此无论你的工具多么谨慎,爬取行为都可能违反这些条款。本文中的代码没有改变这一点,它只是让技术部分得以实现。
以下几条原则值得坚守。仅采集公开数据:任何人无需账户即可在搜索页面看到的产品标题、价格、图片、配送信息和评分。尊重网站的 robots.txt 和其声明的速率预期,保持请求量足够低,不要给任何人的服务器造成压力。如果你计划将数据用于商业目的,请获得许可或签署官方数据协议,而不是假设沉默即为同意。绝不采集个人数据,包括任何与个人买家或卖家账户相关联的信息。
本指南刻意将范围限定在公开的商品列表数据,因为这是让工作保持在可辩护范围内的边界线。它不涵盖任何登录后的内容、账户或个人资料数据、私信、订单历史,或任何绕过身份验证的操作。如果你的项目需要的不仅仅是公开商品列表,正确的方式是使用平台提供的官方 API 或与平台签署数据协议,而不是更巧妙的爬虫。
核心要点
- AliExpress 对爬虫封锁很快。IP 封禁、CAPTCHA 和机器人检测使单个静态 IP 无法使用,因此需要通过轮换代理路由请求。
-
Smart AI Proxy 是即插即用的端点。将你的
requests调用指向一个代理 URL,它在服务端轮换 IP 并转发到 Crawling API,无需重写代码。 -
使用内置解析器省去选择器编写。在
CrawlbaseAPI-Parameters请求头中发送scraper=aliexpress-serp,代理直接返回整洁的结构化 JSON 而不是原始 HTML。 - 保存并扩展。将结果持久化到 JSON 或数据库,然后循环关键词、添加并发、处理错误,从演示升级到生产任务。
- 坚守公开数据范围。尊重 AliExpress 的服务条款和 robots.txt;不涉及账户、个人数据或任何绕过身份验证的操作。
常见问题
为什么抓取 AliExpress 需要代理?
AliExpress 通过 IP 封禁、CAPTCHA 和机器人检测来阻断自动化流量,因此在任何实质性访问量下,单个静态 IP 几乎立刻就会被限速或封禁。轮换代理为每个请求提供不同的真实用户 IP,这样单个地址既不会触发速率限制,也不会陷入质询困境。Crawlbase Smart AI Proxy 在一个端点背后为你处理这种轮换。
Smart AI Proxy 与 Crawling API 有什么区别?
两者都访问相同的 Crawlbase 爬取后端,区别在于集成方式。Smart AI Proxy 是一个代理端点,可以嵌入任何支持 HTTP 代理的工具,现有代码无需改动即可使用。Crawling API 是一个 HTTP API,适合在编写新代码时直接调用。本指南使用 Smart AI Proxy,因为爬虫是一个标准的 Python requests 脚本。
如何获取结构化数据而不是原始 HTML?
在 CrawlbaseAPI-Parameters 请求头中发送 scraper=aliexpress-serp 参数。由于 Smart AI Proxy 会转发到 Crawling API,这会运行 Crawlbase 内置的 AliExpress 搜索解析器,并以整洁的 JSON 形式返回每个产品的标题、价格、URL、图片、配送信息和销量,完全无需编写或维护 CSS 选择器。
为什么在使用代理时需要禁用 SSL 验证?
通过 Smart AI Proxy 隧道传输 HTTPS 流量需要跳过本地证书检查,即 curl 中的 -k 标志和 Python requests 中的 verify=False。如果没有这个设置,你的客户端与代理之间的握手可能会失败。对于长期运行的生产服务,应妥善配置证书处理,而不是完全禁用检查。
Smart AI Proxy 可以用于 AliExpress 以外的网站吗?
可以。Smart AI Proxy 是一个通用的轮换代理端点,适用于大多数公开网站,而不仅仅是 AliExpress。scraper=aliexpress-serp 解析器是 AliExpress 专属的,但代理本身可以将请求路由到任何目标。其他网站有其自己的解析器,或者你也可以获取原始 HTML 自行解析。
抓取 AliExpress 是否合法?
这取决于 AliExpress 的服务条款、你所在的司法管辖区以及你的目的,而他们的条款确实限制自动化访问。请严格遵守公开的商品列表数据范围,尊重 robots.txt 和速率预期,绝不触碰账户、个人数据或任何绕过身份验证的操作。对于商业再利用,请获得许可或签署官方数据协议,而不是依赖爬虫。
大规模爬取任何站点,无需与基础设施对抗。
Crawlbase 负责处理代理、指纹和 CAPTCHA,让你的团队专注于交付数据流水线,而非维护爬取管道。1,000 次请求免费,无需信用卡。

