> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/integrations/cn/proxy-integrations/puppeteer.md).

# Puppeteer

使用 Oxylabs 代理为 Puppeteer 配置，以通过 Node.js 控制无头 Chrome 或 Chromium。带代码示例的分步指南。

[**Puppeteer**](https://developer.chrome.com/docs/puppeteer/) 它是一个 Node 库，提供一个高级 API，可通过 DevTools Protocol 控制无头 Chrome 或 Chromium。

观看我们的视频指南，或按照下面的步骤将 Puppeteer 与以下 Oxylabs 代理集成：

* [**住宅代理和移动代理**](#residential-and-mobile-proxies)
* [**数据中心代理**](#datacenter-proxies)
* [**独享数据中心代理（企业版）**](#dedicated-datacenter-proxies-enterprise)
* [**独享数据中心代理（自助服务版）**](#dedicated-datacenter-proxies-self-service)
* [**ISP代理**](#isp-proxies)
* [**独享ISP代理**](#dedicated-isp-proxies)

{% embed url="<https://youtu.be/9xyvfs0Qikw>" %}

### **步骤 1**

安装 [Node.js](https://nodejs.org/en/download) 以及您选择的代码编辑器。（如果您已安装，可跳过此步骤）

### **步骤 2**

创建一个 Node.js 项目并安装所需的包。

### **步骤 3**

在 Puppeteer 中，填写该值，例如：

在你的 Puppeteer 脚本中，设置 `--proxy-server` 值，如下所示：

```javascript
(async () => {
    const browser = await puppeteer.launch({
        headless: false,
        args: [`--proxy-server=host:port`]
    });
```

输入您的 `服务器` 值，具体取决于您选择的 Oxylabs 代理类型：

* [住宅代理和移动代理](#residential-and-mobile-proxies)
* [数据中心代理](#datacenter-proxies)
* [独享数据中心代理（企业版）](#dedicated-datacenter-proxies-enterprise)
* [独享数据中心代理（自助服务版）](#dedicated-datacenter-proxies-self-service)
* [ISP代理](#isp-proxies)
* [独享ISP代理](#dedicated-isp-proxies)

#### 住宅代理和移动代理

```javascript
args: [`--proxy-server=pr.oxylabs.io:7777`] //--proxy-server=host:port
```

**主机：** `pr.oxylabs.io`

**端口：** `7777`

**用户名：** `customer-USERNAME`

**密码：** `PASSWORD`

{% hint style="warning" %}
**注意：** 别忘了添加 `customer-` 用户名前缀。
{% endhint %}

你还可以使用 **附加参数** 搭配住宅代理和移动代理来设置地理位置（国家/地区、州、省、市等）并控制会话。查看 [住宅代理文档](/products/cn/proxies/residential-proxies.md) 以了解更多。

#### 数据中心代理

```javascript
args: [`--proxy-server=dc.oxylabs.io:8001`] //--proxy-server=host:port
```

**主机：** `dc.oxylabs.io`

**端口：** `8001`

**用户名：** `user-username`

**密码：** `password`

{% hint style="warning" %}
**注意：** 别忘了添加 `user-` 用户名前缀。
{% endhint %}

**按 IP 计费订阅**

端口是分配给来自 [代理列表](/products/cn/proxies/datacenter-proxies/proxy-list.md)的 IP 地址的顺序编号。因此，端口 `8001` 将始终使用你列表中的第一个 IP 地址。你也可以通过将端口设置为 [代理 IP 轮换](/products/cn/proxies/datacenter-proxies/ip-control.md) 来启用 `8000`.

此外，你还可以指定 [地理位置](/products/cn/proxies/datacenter-proxies/select-country.md)，例如美国，方法是将 **代理用户名** 设置为 `user-USERNAME-country-US`.

**按流量计费订阅**

该端口 `8001` 会随机选择一个 IP 地址，但在会话期间保持一致。或者，你可以通过使用端口 [轮换代理 IP](/products/cn/proxies/datacenter-proxies/ip-control.md) 来在每个请求中更换 IP `8000`.

如果你想使用特定的 [地理位置](/products/cn/proxies/datacenter-proxies/select-country.md)，例如美国，请将代理用户名设置为 `user-USERNAME-country-US`.

#### 独享数据中心代理（企业版）

```javascript
args: [`--proxy-server=1.2.3.4:60000`] //--proxy-server=host:port
```

**主机：** `1.2.3.4` （来自你的 [代理列表](/products/cn/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md))

**端口：** `60000` (HTTP), `1180` (SOCKS5)

**用户名：** `username`

**密码：** `password`

对于企业版独享数据中心代理（通过销售团队购买），你需要从已获取的 [代理列表](/products/cn/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md).

#### 独享数据中心代理（自助服务版）

```javascript
args: [`--proxy-server=ddc.oxylabs.io:8001`] //--proxy-server=host:port
```

**主机：** `ddc.oxylabs.io`

**端口：** `8001`

**用户名：** `user-username`

**密码：** `password`

{% hint style="warning" %}
**注意：** 别忘了添加 `user-` 用户名前缀。
{% endhint %}

对于自助式独享数据中心代理（通过 Oxylabs 仪表盘购买），端口表示从已获取的 [代理列表](/products/cn/proxies/dedicated-datacenter-proxies/self-service/proxy-list.md)的 IP 地址的顺序编号。如果你希望每个请求都获得不同的 IP，请将端口改为 `8000` 以启用 [代理轮换](/products/cn/proxies/dedicated-datacenter-proxies/self-service/proxy-rotation.md).

#### ISP代理

```javascript
args: [`--proxy-server=isp.oxylabs.io:8001`] //--proxy-server=host:port
```

**主机：** `isp.oxylabs.io`

**端口：** `8001`

**用户名：** `user-username`

**密码：** `password`

{% hint style="warning" %}
**注意：** 别忘了添加 `user-` 用户名前缀。
{% endhint %}

对于 ISP 代理，端口会分配给一个特定的 IP 地址及其位置。因此，端口 `8001` 将始终选择你 [代理列表](/products/cn/proxies/isp-proxies/proxy-list.md)的 IP 地址的顺序编号。如果你希望每个请求都获得不同的 IP，请将端口改为 `8000` 以启用 [代理轮换](/products/cn/proxies/isp-proxies/proxy-rotation.md).

#### 独享ISP代理

```javascript
args: [`--proxy-server=disp.oxylabs.io:8001`] //--proxy-server=host:port
```

**主机：** `disp.oxylabs.io`

**端口：** `8001`

**用户名：** `user-username`

**密码：** `password`

{% hint style="warning" %}
**注意：** 别忘了添加 `user-` 用户名前缀。
{% endhint %}

您需要选择分配给所购买的 IP 地址的端口 [代理列表](/products/cn/proxies/dedicated-isp-proxies/self-service/proxy-list.md)，你可以在 Oxylabs 控制面板中找到。 `8001` 端口将为所有请求选取列表中的第一个 IP 地址。使用端口 `8000` 可自动进行 [代理 IP 轮换](/products/cn/proxies/dedicated-isp-proxies/self-service/proxy-rotation.md).

### **步骤 4**

在 `page.authenticate()`, 输入你的 Oxylabs 代理用户的 `username` 并 `password`. 一个基本代码示例如下：

```javascript
const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch({
    headless: false,
    args: ['--proxy-server=pr.oxylabs.io:7777]  
});
  const page = await browser.newPage();
    await page.authenticate({
        username: 'USERNAME',
        password: 'PASSWORD'
    });
    await page.goto('https://ip.oxylabs.io');
    await page.screenshot({path: 'example.png'});
    await browser.close();
})();
```

{% hint style="warning" %}
**注意：** 别忘了添加 `customer-` 或 `user-` 如果所选代理类型需要，请在用户名之前添加前缀。
{% endhint %}

就这样！你已成功将 Oxylabs 代理与 Puppeteer 集成。你还可以在原始的 Puppeteer 集成博客文章中找到 `proxy-chain` 教程以及轮换代理指南。 [此处](https://oxylabs.io/resources/integrations/puppeteer).

如果你想了解更多使用 Puppeteer 进行网页抓取的内容，请阅读我们的 [博客文章](https://oxylabs.io/blog/puppeteer-tutorial).

### 常见错误

<details>

<summary><strong>Puppeteer 返回错误</strong></summary>

你可能遇到的问题之一是在尝试连接代理服务器时，Puppeteer 返回错误。造成这种情况的原因可能多种多样，其中最主要的原因是你的代理服务器需要使用代理凭据进行身份验证。

要解决此问题，你需要在 `Puppeteer 选项` 对象中输入代理服务器的用户名和密码。之后，再试一次使用代理。

</details>

<details>

<summary><strong>页面未加载</strong></summary>

尽管 Puppeteer 可能已经能够连接到代理，但它仍然可能难以加载页面。最常见的原因是网络连接不佳。

解决此问题最常见的方法是增加 `Puppeteer 选项` 对象中的超时。完成后，使用代理应该不再是问题。

</details>

<details>

<summary><strong>其他问题</strong></summary>

如果问题仍未解决，这意味着出于某种原因，你的代理无法保持连接。在这种情况下，你应该检查代理服务器或联系你的提供商以获得进一步帮助。

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developers.oxylabs.io/integrations/cn/proxy-integrations/puppeteer.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
