Scrapy
Scrapy 通过内建的 HTTP_PROXY 环境变量与 HttpProxyMiddleware 接入 helodata。需要按请求轮换时再加 scrapy-rotating-proxies。
单一静态代理
在 settings.py:
HTTPPROXY_AUTH_ENCODING = "latin-1"
DOWNLOADER_MIDDLEWARES = {
"scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware": 750,
}每个请求中:
def start_requests(self):
proxy = "http://helo_s1a2b3c4d5e-type-res-region-us:PASSWORD@gate.helodata.io:7777"
for url in self.start_urls:
yield scrapy.Request(url, meta={"proxy": proxy})或启动前设环境变量:
export HTTP_PROXY="http://helo_s1a2b3c4d5e-type-res-region-us:PASSWORD@gate.helodata.io:7777"
export HTTPS_PROXY="$HTTP_PROXY"
scrapy crawl myspider用 scrapy-rotating-proxies 做 ISP 轮换
settings.py:
中间件会按代理记录失败并跳过被 ban 的;配合 RETRY_HTTP_CODES = [429, 502, 522, 524] 处理瞬时网关错误。
住宅会话动态轮换
无需外部清单,按需生成会话:
添加 helodata 标签
标签会出现在流量统计中——见 使用统计。
验证
常见陷阱
HttpProxyMiddleware被关闭 — Scrapy 默认启用,自定义DOWNLOADER_MIDDLEWARES时记得保留它。小 ISP 批次配高 CONCURRENT_REQUESTS — 批次只有 N 个 IP,超 N 的并发只是排队。
CONCURRENT_REQUESTS_PER_DOMAIN与池大小匹配。
最后更新于
这有帮助吗?