# 地理位置定向

您可以通过添加以下参数为您的无头浏览器会话指定位置： `p_cc`, `p_city`，或 `p_state` 参数来为您的浏览器会话指定国家：

* `p_cc` – 选择国家，使用 2 位字母国家代码（例如：US、DE、FR）。如果未指定国家，系统将根据可用性自动分配一个。
* `p_city` – 选择以小写书写的城市（例如：berlin、los\_angeles 等）。您还必须同时指定以下其中一项： `p_cc` 或 `p_state`
* `p_state` – 当以小写名称使用时（例如：texas、ohio）选择州（仅适用于美国）

以下是用于按国家定位的示例代码：

{% tabs %}
{% tab title="Python (Playwright)" %}

```python
from playwright.sync_api import sync_playwright

username = "your-username"
password = "your-password"
endpoint = "ubc.oxylabs.io"
cc = "US"  # 用所需的 2 位国家代码替换
browser_url = f"wss://{username}:{password}@{endpoint}?p_cc={cc}"

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(browser_url)
    page = browser.new_page()
    page.goto('https://example.com')
    browser.close()
```

{% endtab %}

{% tab title="JavaScript (Playwright)" %}

```javascript
import { chromium } from 'playwright';

(async () => {
    const username = 'your-username';
    const password = 'your-password';
    const endpoint = 'ubc.oxylabs.io';
    const cc = 'US';  // 用所需的 2 位国家代码替换
    const browserUrl = `wss://${username}:${password}@${endpoint}?p_cc=${country}`;

    const browser = await chromium.connectOverCDP(browserUrl);
    const page = await browser.newPage();
    await page.goto('https://example.com');
    await browser.close();
})();
```

{% endtab %}

{% tab title="JavaScript (Puppeteer)" %}

```javascript
import puppeteer from 'puppeteer';

(async () => {
    const username = 'your-username';
    const password = 'your-password';
    const endpoint = 'ubc.oxylabs.io';
    const cc = 'US';  // 用所需的 2 位国家代码替换
    const browserUrl = `wss://${username}:${password}@${endpoint}?p_cc=${country}`;

    const browser = await puppeteer.connect({
        browserWSEndpoint: browserUrl
    });
    const page = await browser.newPage();
    await page.goto('https://example.com');
    await browser.close();
})();
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
**注意：** 如果 `p_state` 和 `p_cc` 都已指定， `p_state` 将优先，且 `p_cc` 将被忽略。
{% endhint %}
