> For the complete documentation index, see [llms.txt](https://docs.ipwo.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ipwo.net/ji-cheng-jiao-cheng/gong-ju-yu-dai-li-ruan-jian/ru-he-wei-scrapy-she-zhi-ipwo-dai-li.md).

# 如何为Scrapy 设置 IPWO 代理

Scrapy 是 Python 生态中广泛使用的网络爬虫框架，具有异步请求、高性能采集和丰富扩展能力，适用于数据采集、SEO 监控、价格监测等场景。Scrapy 支持通过 `Request.meta["proxy"]` 为每个请求指定代理，因此可以方便地集成 IPWO 动态住宅代理。

***

### 一、准备工作

开始配置前，请确保已完成以下准备：

* 已安装 Python 3
* 已安装 Scrapy
* 已开通 [IPWO 动态住宅代理](/dai-li-chan-pin/dong-tai-zhu-zhai-dai-li.md)
* 已创建 Zone
* 已获取代理用户名、密码和代理地址

如果尚未安装 Scrapy，可执行：

```bash
pip install scrapy
```

***

### 二、创建 Scrapy 项目

创建新的 Scrapy 项目：

```bash
scrapy startproject ipwo_demo
```

进入项目目录：

```bash
cd ipwo_demo
```

然后创建一个 Spider：

```bash
scrapy genspider demo ipinfo.io
```

***

### 三、配置 IPWO 代理

打开 Spider 文件，在请求中配置代理。

示例代码：

```python
import scrapy


class DemoSpider(scrapy.Spider):

    name = "demo"

    def start_requests(self):

        proxy = "http://username_custom_zone_us:password@us.ipwo.net:7878"

        yield scrapy.Request(
            url="https://ipinfo.io/json",
            meta={
                "proxy": proxy
            }
        )

    def parse(self, response):

        print(response.text)
```

Scrapy 支持通过 `meta["proxy"]` 为单个请求指定代理服务器，该方式会优先于系统环境变量中的代理配置。

请根据自己的账户信息替换以下内容：

| 参数                         | 说明      |
| -------------------------- | ------- |
| username\_custom\_zone\_us | 代理用户名   |
| password                   | 代理密码    |
| us.ipwo.net                | 代理服务器地址 |
| 7878                       | 代理端口    |

***

### 四、运行项目

执行：

```bash
scrapy crawl demo
```

如果代理配置成功，可以看到类似结果：

```json
{
  "ip": "203.0.113.10",
  "country": "US"
}
```

如果返回的公网 IP 已发生变化，并且国家地区符合预期，则说明代理已经配置成功。

***

### 五、固定 Session（可选）

如果业务需要保持同一个出口 IP，可以在用户名中增加 Session 参数。

例如：

```
username_custom_zone_us_session_123456
```

使用相同的 Session 发起请求时，会尽可能保持同一个住宅 IP，适用于账号登录、长期会话等业务场景。

更多内容可参考《Session 使用说明》。

***

### 六、批量采集建议

在进行批量采集时，建议：

* 控制请求频率，避免短时间发送大量请求
* 登录类业务建议使用固定 Session
* 根据目标业务选择对应国家地区
* 设置合理的请求超时时间
* 开启 Retry 重试机制，提高请求成功率

Scrapy 支持异步下载和高并发请求，但建议根据目标网站的访问限制合理设置并发数量、下载延迟和重试策略，以获得更稳定的采集效果。

***

### 七、常见问题

#### 返回 407 Proxy Authentication Required

请检查：

* 用户名是否正确
* 密码是否正确
* Zone 是否配置正确

***

#### 请求超时（Timeout）

请检查：

* 当前网络是否能够访问代理节点
* timeout 设置是否过低
* 网络连接是否稳定

***

#### 返回的 IP 未变化

请确认：

* 已在 `meta["proxy"]` 中正确配置代理
* 代理地址格式正确
* 请求确实通过 Scrapy 发起

***

#### 国家地区不正确

请检查：

* Zone 是否选择正确
* 用户名中的国家参数是否正确
* 是否使用了对应国家的代理入口

***

### 八、相关文章

* [如何获取代理信息](/kai-fa-zhe-wen-dang/kuai-su-kai-shi/huo-qu-dai-li-xin-xi.md)
* [Session 使用说明](/kai-fa-zhe-wen-dang/api-shi-yong-zhi-nan/session-shi-yong-shuo-ming.md)
* [国家地区参数说明](/kai-fa-zhe-wen-dang/api-shi-yong-zhi-nan/guo-jia-di-qu-can-shu-shuo-ming.md)
* [请求最佳实践](/kai-fa-zhe-wen-dang/api-shi-yong-zhi-nan/qing-qiu-zui-jia-shi-jian.md)
* [API 调用与批量采集](/dai-li-ji-chu-zhi-shi/api-diao-yong-yu-pi-liang-cai-ji.md)
* [如何检测代理是否生效](/dai-li-jian-ce-yu-yin-si-an-quan/ru-he-jian-ce-dai-li-shi-fou-sheng-xiao.md)
