> ## Documentation Index
> Fetch the complete documentation index at: https://brightdata-ipv6-release.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# SOCKS和SOCKS5代理

> 了解如何将 `SOCKS` 和 `SOCKS5` 协议与 Bright Data 代理网络结合使用

## 支持的 `SOCKS` 协议

Bright Data支持 `SOCKS` 协议版本5：`SOCKS5`。

## 使用 `SOCKS5` 执行抓取任务

互联网数据收集使用的最常见协议是 `HTTP` 和 `HTTPS` ，一些工具或实用程序需要 `SOCKS5` 才能运行。

Bright Data不区分`HTTP`、`HTTPS`和 [`SOCKS5` 代理](https://brightdata.com/solutions/socks5-proxies)： 我们的所有代理都支持所有三种协议。您可以在使用同一代理时在不同协议之间切换。

## 您真的需要 `SOCKS5` 吗？

我们的 `HTTP` 和 `HTTPS` 代理解决方案通常最适合抓取网站，成本最低，性能最高。但是，如果任务仍然需要 `SOCKS5` ，Bright Data可以在全球范围内提供优质代理。

## 支持的代理类型

所有 Bright Data 代理网络均支持 `SOCKS5` 代理连接：数据中心、ISP、住宅和移动代理网络。

<Info>目前仅针对 `HTTPS` 目标支持在Bright Data的住宅代理中使用 `SOCKS5`，很快也将为 `HTTP` 目标提供支持。</Info>

## SOCKS5主代理端口配置

<Note> **Bright Data将端口 `22228` 用于 `SOCKS5`** </Note>

使用 `SOCKS5` 时，请确保使用 `brd.superproxy.io:22228`，而不是 `HTTP` 和 `HTTPS` 协议的标准端口<Tooltip tip="Port 33335 replacing port 22225 deprecated on Sep 2026, click to read more">[`33335`](https://docs.brightdata.com/general/faqs#which-port-shall-i-use-22225-or-33335) </Tooltip>。

## 使用Bright Data进行 `SOCKS5` 定位

<Warning> **Bright Data 仅支持 `SOCKS5` 代理的主机名（域名）** </Warning>

根据我们的合规规定，我们仅允许 `SOCKS5` 请求以主机名/域名作为目标来转发。使用显式IP或本地IP解析发送的请求会被屏蔽。

因此，配置您的代码、客户端或调用应用程序以：

1. 使用域名作为目标

2. 远程而非本地解析 DNS

遵守这些规则将确保请求通过我们的代理对等节点到达目标域 IP。

### 目标端口

#### Datacenter & ISP

Bright Data 针对数据中心和ISP代理，支持所有高于 1024 的端口。

#### 住宅 & 移动

对于住宅和移动代理，Bright Data支持以下端口：`8080`、`8443`、`5678`、`1962`、`2000`、`4443`、`4433`、`4430`、`4444`和`1969`。

## 将SOCKS5与 `curl`、`Javascript` 和 `Python` 结合使用

<Tabs>
  <Tab title="curl">
    <Warning> **发出 `curl` 请求时使用 `socks5h://brd.superproxy.io:22228`** </Warning>

    要将 `curl` 与Bright Data SOCKS5代理一起使用，您必须明确执行以下操作：

    1. 将 `-x` 添加到命令行参数中

    2. 将 `SOCKS5h` 协议用于远程 DNS 查找

    3. 使用的代理地址为 `brd.superproxy.io:22228`

    4. 提供Bright Data代理区域凭证

    5. 住宅和移动代理：添加`curl -k` 选项以忽略SSL错误代理或设置SSL证书
       [Setup SSL Certificate](https://docs.brightdata.com/general/account/ssl-certificate#using-the-ssl-certificate-in-your-code)

    不符合上述所有要求的请求将被屏蔽。

    `curl` 命令示例：

    ```sh theme={null}
    curl -i -k -x socks5h://brd.superproxy.io:22228 --proxy-user [USERNAME]:[PASSWORD] "https://geo.brdtest.com/welcome.txt"
    ```
  </Tab>

  <Tab title="Javascript">
    Example code for `SOCKS5` request:

    ```javascript theme={null}
    // install https://www.npmjs.com/package/socks-proxy-agent
    const https = require('https');
    const { SocksProxyAgent } = require('socks-proxy-agent');
    const user_pass = 'brd-customer-[ACCOUNT ID]-zone-[ZONE NAME]:[ZONE PASSWORD]';
    const socks_proxy_url = `socks5h://${user_pass}@brd.superproxy.io:22228`;
    const agent = new SocksProxyAgent(socks_proxy_url);
    https.get('https://geo.brdtest.com/welcome.txt', {agent},
      res=>res.pipe(process.stdout));
    ```
  </Tab>

  <Tab title="Python">
    Example code for `SOCKS5` request:

    ```python theme={null}
    # https://docs.python-requests.org/en/latest/user/advanced/#socks
    import requests
    user_pass = 'brd-customer-[ACCOUNT ID]-zone-[ZONE NAME]:[ZONE PASSWORD]'
    socks_proxy_url = f'socks5h://{user_pass}@brd.superproxy.io:22228'
    resp = requests.get('https://geo.brdtest.com/welcome.txt',
      proxies=dict(http=socks_proxy_url, https=socks_proxy_url))

    print(resp.text)
    ```
  </Tab>
</Tabs>

#### `curl` 故障排除

我们建议使用 `curl` 来排除SOCKS5请求的故障，并添加 `curl` 选项 `-i` 或 `-v` 来打印标头字段。查找 `x-brd-error`、`x-brd-err-code` 和 `x-brd-err-msg` ，以获取Bright Data代理网络发送的详细错误消息。
要查看我们的完整错误目录（也适用于 `HTTP` 和 `HTTPS` ），请访问此页面: [代理错误故障排除](https://docs.brightdata.com/proxy-networks/errorCatalog)

## `SOCKS5` 身份验证配置

<Note> **Bright Data必须接收代理区域凭据才能访问`SOCKS5`代理** </Note>

身份验证也类似于 `HTTP` 和 `HTTPS` ，通过传递用户和密码来访问代理。

有些工具或实用程序会让您分别输入凭据和端口作为参数，如控制面板中所示；有些会要求您提供一个url，其中的凭据作为单个参数分隔：`userName:password@brd.superproxy.io:22228`。

## `SOCKS5` 地理位置和国家/地区选择

位置设置与 `HTTP/HTTPS` 代理地理定位相同，通过在您的 `SOCKS5` 用户名中添加 `-country-[国家代码]` 来设置。

使用 `curl` 命令获取意大利（国家代码：`it`）`SOCKS5` 代理的示例：

```sh theme={null}
curl -i -k -x socks5h://brd.superproxy.io:22228 --proxy-user [proxy zone user]-country-it:[zone password] "https://geo.brdtest.com/welcome.txt" -v
```

## `SOCKS5` 和 `SOCKS5h` 之间的区别

`SOCKS5` 和 `SOCKS5h` 之间的区别在于它们处理DNS（域名系统）解析的方式：

1. **SOCKS5**：在标准SOCKS5代理中，客户端负责解析DNS。这意味着域名（例如 `example.com`）在通过代理传递之前被解析为IP地址。然后，代理将流量路由到已解析的IP地址。

2. **SOCKS5h**: “h” 代表“主机名”。在这种情况下，代理服务器负责解析DNS。客户端将域名（而不是IP地址）发送给代理服务器，代理服务器将其解析并转发请求。如果您想从客户端网络隐藏目标域名，这很有用。

总结一下：

* **SOCKS5**：DNS 解析发生在客户端。

* **SOCKS5h**：DNS 解析发生在代理端。

Bright Data 支持代理端SOCKS5h - 选择最适合您要求的方案。
