> 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/pt-br/proxy-integrations/selenium.md).

# Selenium

Integre o Selenium com Proxies da Oxylabs para automação de navegador e muito mais. Guias de configuração em Python e Java com exemplos de código.

[**Selenium**](https://www.selenium.dev/) é uma ferramenta que ajuda a automatizar interações com o navegador web para testes de sites e muito mais.

Assista ao nosso guia em vídeo ou siga os passos abaixo para integrar o Selenium [**Python**](#python-setup) ou [**Java**](#how-to-integrate-proxies-with-selenium-using-java) com os seguintes Proxies da Oxylabs:

* **Residential & Mobile Proxies**
* **Datacenter Proxies**
* **Dedicated Datacenter Proxies (Empresarial)**
* **Dedicated Datacenter Proxies (Autoatendimento)**
* **ISP Proxies**
* **Dedicated ISP Proxies**

{% embed url="<https://www.youtube.com/watch?v=uh71blwf1l0>" %}

## **Configuração do Python**

{% stepper %}
{% step %}

### Configurando o Selenium

Como usar o módulo padrão do Selenium para implementar proxies que exigem autenticação torna todo o processo complicado, instale [**Selenium Wire**](https://github.com/wkeeling/selenium-wire) para estender os bindings Python do Selenium usando `pip`:

```
pip install selenium-wire
```

Outro pacote recomendado para esta integração é `webdriver-manager`. É um pacote que simplifica o gerenciamento de drivers binários para diferentes navegadores:

```
pip install webdriver-manager
```

{% endstep %}

{% step %}

### Autenticação de proxy

Especifique o Proxy Endpoint escolhido e as credenciais da conta no seguinte formato:

```python
USERNAME = "your_username"
PASSWORD = "your_password"
ENDPOINT = "host:port"
```

Em seguida, ajuste seus valores de acordo com o tipo de proxy da Oxylabs escolhido:

* [Residential & Mobile Proxies](#residential-and-mobile-proxies)
* [Datacenter Proxies](#datacenter-proxies)
* [Dedicated Datacenter Proxies (Empresarial)](#dedicated-datacenter-proxies-enterprise)
* [Dedicated Datacenter Proxies (Autoatendimento)](#dedicated-datacenter-proxies-self-service)
* [ISP Proxies](#isp-proxies)
* [Dedicated ISP Proxies](#dedicated-isp-proxies)

#### Residential & Mobile Proxies

**Host:** `pr.oxylabs.io`

**Porta:** `7777`

**Nome de usuário:** `customer-USERNAME`

**Senha:** `PASSWORD`

{% hint style="warning" %}
**Observação:** Não se esqueça de adicionar `customer-` prefixo ao seu nome de usuário.
{% endhint %}

Você também pode usar parâmetros adicionais com Residential Proxies e Mobile Proxies para definir a geolocalização (país, estado, cidade etc.) e controlar sessões. Confira o [para saber mais.](/products/pt-br/proxies/residential-proxies.md) Dedicated Datacenter Proxies empresariais

#### Datacenter Proxies

**Host:** `dc.oxylabs.io`

**Porta:** `8001`

**Nome de usuário:** `user-username`

**Senha:** `senha`

{% hint style="warning" %}
**Observação:** Não se esqueça de adicionar `user-` prefixo ao seu nome de usuário.
{% endhint %}

{% tabs %}
{% tab title="Assinatura pay-per-IP" %}
A porta é o número sequencial atribuído a um endereço IP da [lista de proxies adquirida](/products/pt-br/proxies/datacenter-proxies/proxy-list.md). Assim, a porta `8001` usa o primeiro endereço IP da sua lista. Você também pode ativar [de IP do proxy](/products/pt-br/proxies/datacenter-proxies/ip-control.md) definindo a porta como `8000`.

Além disso, você pode especificar o [geolocalização](/products/pt-br/proxies/datacenter-proxies/select-country.md), por exemplo, os EUA, definindo o **Nome de usuário do proxy** para `user-USERNAME-country-US`.
{% endtab %}

{% tab title="Assinatura pay-per-traffic" %}
A porta `8001` escolhe um endereço IP aleatório, mas permanece consistente durante uma sessão. Como alternativa, você pode [alternar os IPs do proxy](/products/pt-br/proxies/datacenter-proxies/ip-control.md) a cada solicitação usando a porta `8000`.

Se você quiser usar um [geolocalização](/products/pt-br/proxies/datacenter-proxies/select-country.md), por exemplo, os EUA, defina o nome de usuário do proxy como `user-USERNAME-country-US`.
{% endtab %}
{% endtabs %}

#### Dedicated Datacenter Proxies (Empresarial)

**Host:** `1.2.3.4` (endereço IP da sua [lista de proxies adquirida](/products/pt-br/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md))

**Porta:** `60000` (SOCKS5) `1180` USERNAME

**Nome de usuário:** `nome de usuário`

**Senha:** `senha`

Para Enterprise Dedicated Datacenter Proxies (adquiridos por meio da equipe de vendas), você terá que escolher um endereço IP do conjunto adquirido [lista de proxies adquirida](/products/pt-br/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md).

#### Dedicated Datacenter Proxies (Autoatendimento)

**Host:** `ddc.oxylabs.io`

**Porta:** `8001`

**Nome de usuário:** `user-username`

**Senha:** `senha`

{% hint style="warning" %}
**Observação:** Não se esqueça de adicionar `user-` prefixo ao seu nome de usuário.
{% endhint %}

Para Self-Service Dedicated Datacenter Proxies (adquiridos pelo painel da Oxylabs), a porta indica o número sequencial de um endereço IP do conjunto adquirido [lista de proxies adquirida](/products/pt-br/proxies/dedicated-datacenter-proxies/self-service/proxy-list.md). Se você quiser obter um IP diferente a cada solicitação, altere a Porta para `8000` para ativar [rotação de proxy](/products/pt-br/proxies/dedicated-datacenter-proxies/self-service/proxy-rotation.md).

#### ISP Proxies

**Host:** `isp.oxylabs.io`

**Porta:** `8001`

**Nome de usuário:** `user-username`

**Senha:** `senha`

{% hint style="warning" %}
**Observação:** Não se esqueça de adicionar `user-` prefixo ao seu nome de usuário.
{% endhint %}

Com ISP Proxies, a porta é atribuída a um endereço IP específico e à sua localização. Portanto, a porta `8001` sempre escolherá o primeiro IP da sua [lista de proxies adquirida](/products/pt-br/proxies/isp-proxies/proxy-list.md). Se você quiser obter um IP diferente a cada solicitação, altere a Porta para `8000` para ativar [rotação de proxy](/products/pt-br/proxies/isp-proxies/proxy-rotation.md).

#### Dedicated ISP Proxies

**Host:** `disp.oxylabs.io`

**Porta:** `8001`

**Nome de usuário:** `user-username`

**Senha:** `senha`

{% hint style="warning" %}
**Observação:** Não se esqueça de adicionar `user-` prefixo ao seu nome de usuário.
{% endhint %}

Você precisará escolher a porta atribuída a um endereço IP da lista comprada [lista de proxies adquirida](/products/pt-br/proxies/dedicated-isp-proxies/self-service/proxy-list.md), que você pode encontrar no painel da Oxylabs. A `8001` porta selecionará o primeiro endereço IP da sua lista para todas as solicitações. Use a porta `8000` para rotação automática [de IP do proxy](/products/pt-br/proxies/dedicated-isp-proxies/self-service/proxy-rotation.md).
{% endstep %}

{% step %}

### Testando a conexão

Verifique se o proxy está funcionando acessando [**ip.oxylabs.io**](https://ip.oxylabs.io/). Se tudo estiver funcionando corretamente - ele retornará um endereço IP do proxy que você está usando.

```python
try:
    driver.get("https://ip.oxylabs.io/")
    return f'\nYour IP is: {driver.find_element(By.CSS_SELECTOR, "pre").text}'
finally:
    driver.quit()
```

{% endstep %}

{% step %}

### Exemplo de código

Código completo para a integração do Oxylabs Residential Proxies com o Selenium:

```python
from selenium.webdriver.common.by import By
from seleniumwire import webdriver
# A package to have a chromedriver always up-to-date.
from webdriver_manager.chrome import ChromeDriverManager

USERNAME = "your_username"
PASSWORD = "your_password"
ENDPOINT = "pr.oxylabs.io:7777"

def chrome_proxy(user: str, password: str, endpoint: str) -> dict:
    wire_options = {
        "proxy": {
            "http": f"http://{user}:{password}@{endpoint}",
            "https": f"https://{user}:{password}@{endpoint}",
        }
    }

    return wire_options

def execute_driver():
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    proxies = chrome_proxy(USERNAME, PASSWORD, ENDPOINT)
    driver = webdriver.Chrome(
    ChromeDriverManager(driver_version='<VERSION>').install(), options=options, seleniumwire_options=proxies
    )
    try:
        driver.get("https://ip.oxylabs.io/")
        return f'\nYour IP is: {driver.find_element(By.CSS_SELECTOR, "pre").text}'
    finally:
        driver.quit()


if __name__ == '__main__':
    print(execute_driver())
```

{% endstep %}
{% endstepper %}

## Configuração do Java <a href="#how-to-integrate-proxies-with-selenium-using-java" id="how-to-integrate-proxies-with-selenium-using-java"></a>

### Pré-requisitos

1. **Kit de Desenvolvimento Java (JDK):** Versão 8 ou superior (encontre a versão mais recente [aqui](https://www.oracle.com/java/technologies/downloads/)).
2. **Ferramenta de build:** Apache Maven (disponível [aqui](https://www.oracle.com/java/technologies/downloads/)).
3. **IDE Java:** Qualquer IDE ou CLI que ofereça suporte ao Maven.
4. **Navegador:** Google Chrome instalado localmente (disponível [aqui](https://www.google.com/chrome)).

Inicialize um projeto Maven padrão na sua IDE ou CLI preferida antes de adicionar dependências. Após a instalação, você pode verificar suas instalações do Java e do Maven usando as seguintes linhas:

```
java -version
```

<img src="https://oxylabs.io/oxylabs-web/ZpA8dR5LeNNTxDst_4b72a4dd-3675-4391-b18d-bc2a85414588_java_version.png?auto=format%2Ccompress&#x26;w=3840&#x26;q=75" alt="" height="120" width="681">

```
mvn -v
```

<img src="https://oxylabs.io/oxylabs-web/ZpA8dh5LeNNTxDsu_94c7e32d-acd6-439c-8d60-f047c4de6195_maven_version.png?auto=format%2Ccompress&#x26;w=3840&#x26;q=75" alt="" height="123" width="763">

{% stepper %}
{% step %}

### Crie seu projeto

Selecione “New Project”, preencha os detalhes necessários e escolha o sistema de build como Maven:

<img src="https://oxylabs.io/oxylabs-web/ZpA8dx5LeNNTxDsv_27754abb-a0c9-40af-ad7a-e82de9505fe6_maven1.png?auto=format%2Ccompress&#x26;w=3840&#x26;q=75" alt="" height="705" width="784">
{% endstep %}

{% step %}

### Adicione dependências

Adicione as seguintes dependências ao arquivo do seu projeto `pom.xml` arquivo para incluir Selenium WebDriver, [BrowserMob Proxy](https://github.com/lightbody/browsermob-proxy) (para autenticação básica HTTP), e [WebDriverManager](https://github.com/bonigarcia/webdrivermanager):

```xml
<dependencies>
   <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
   <dependency>
       <groupId>org.seleniumhq.selenium</groupId>
       <artifactId>selenium-java</artifactId>
       <version>4.11.0</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/net.lightbody.bmp/browsermob-core -->
   <dependency>
       <groupId>net.lightbody.bmp</groupId>
       <artifactId>browsermob-core</artifactId>
       <version>2.1.5</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.7.32</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
   <dependency>
       <groupId>io.github.bonigarcia</groupId>
       <artifactId>webdrivermanager</artifactId>
       <version>5.5.2</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
   <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
       <version>32.1.2-jre</version>
   </dependency>

</dependencies>
```

{% endstep %}

{% step %}

### Adicionar código-fonte

Baixe as classes wrapper de proxy pré-configuradas do [Repositório Selenium Java da Oxylabs](https://github.com/oxylabs/selenium-proxy-integration-java/tree/main/src/main/java) e adicione-as ao diretório do seu projeto `src/main/java` diretório:

* `ProxySetup.java`: Armazena os parâmetros do seu Proxy Endpoint e as credenciais da conta.
* `ProxyHelper.java`: Gerencia `BrowserMobProxyServer` inicialização, autenticação básica e `ChromeDriver` opções.
* `ProxyDemo.java`: Contém lógica de execução de exemplo para solicitações de proxy padrão e direcionadas por país.
  {% endstep %}

{% step %}

### Configure os Proxies

Abra `ProxySetup.java` e atualize os detalhes do proxy de acordo com o tipo de proxy da Oxylabs escolhido:

* [Residential & Mobile Proxies](#residential-and-mobile-proxies-1)
* [Datacenter Proxies](#datacenter-proxies-1)
* [Dedicated Datacenter Proxies (Empresarial)](#dedicated-datacenter-proxies-enterprise-1)
* [Dedicated Datacenter Proxies (Autoatendimento)](#dedicated-datacenter-proxies-self-service-1)
* [ISP Proxies](#isp-proxies-1)
* [Dedicated ISP Proxies](#dedicated-isp-proxies-1)

#### Residential & Mobile Proxies

```java
final class ProxySetup {
    static final String ENDPOINT = "pr.oxylabs.io:7777"; //host:port
    static final String USERNAME = "customer-USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `pr.oxylabs.io`

**Porta:** `7777`

**Nome de usuário:** `customer-USERNAME`

**Senha:** `PASSWORD`

{% hint style="warning" %}
**Observação:** Não se esqueça de adicionar `customer-` prefixo ao seu nome de usuário.
{% endhint %}

Você também pode usar parâmetros adicionais com Residential Proxies e Mobile Proxies para definir a geolocalização (país, estado, cidade etc.) e controlar sessões. Confira o [para saber mais.](/products/pt-br/proxies/residential-proxies.md) Dedicated Datacenter Proxies empresariais

#### Datacenter Proxies

```java
final class ProxySetup {
    static final String ENDPOINT = "dc.oxylabs.io:8001"; //host:port
    static final String USERNAME = "user-USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `dc.oxylabs.io`

**Porta:** `8001`

**Nome de usuário:** `user-USERNAME`

**Senha:** `PASSWORD`

{% hint style="warning" %}
**Observação:** Não se esqueça de adicionar `user-` prefixo ao seu nome de usuário.
{% endhint %}

{% tabs %}
{% tab title="Assinatura pay-per-IP" %}
A porta é o número sequencial atribuído a um endereço IP da [lista de proxies adquirida](/products/pt-br/proxies/datacenter-proxies/proxy-list.md). Assim, a porta `8001` usa o primeiro endereço IP da sua lista. Você também pode ativar [de IP do proxy](/products/pt-br/proxies/datacenter-proxies/ip-control.md) definindo a porta como `8000`.

Além disso, você pode especificar o [geolocalização](/products/pt-br/proxies/datacenter-proxies/select-country.md), por exemplo, os EUA, definindo o **Nome de usuário do proxy** para `user-USERNAME-country-US`.
{% endtab %}

{% tab title="Assinatura pay-per-traffic" %}
A porta `8001` escolhe um endereço IP aleatório, mas permanece consistente durante uma sessão. Como alternativa, você pode [alternar os IPs do proxy](/products/pt-br/proxies/datacenter-proxies/ip-control.md) a cada solicitação usando a porta `8000`.

Se você quiser usar um [geolocalização](/products/pt-br/proxies/datacenter-proxies/select-country.md), por exemplo, os EUA, defina o nome de usuário do proxy como `user-USERNAME-country-US`.
{% endtab %}
{% endtabs %}

#### Dedicated Datacenter Proxies (Empresarial)

```java
final class ProxySetup {
    static final String ENDPOINT = "1.2.3.4:60000"; //host:port
    static final String USERNAME = "USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `1.2.3.4` (endereço IP da sua [lista de proxies adquirida](/products/pt-br/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md))

**Porta:** `60000` (SOCKS5) `1180` USERNAME

**Nome de usuário:** `USERNAME`

**Senha:** `PASSWORD`

Para Enterprise Dedicated Datacenter Proxies (adquiridos por meio da equipe de vendas), você terá que escolher um endereço IP do conjunto adquirido [lista de proxies adquirida](/products/pt-br/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md).

#### Dedicated Datacenter Proxies (Autoatendimento)

```java
final class ProxySetup {
    static final String ENDPOINT = "ddc.oxylabs.io:8001"; //host:port
    static final String USERNAME = "user-USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `ddc.oxylabs.io`

**Porta:** `8001`

**Nome de usuário:** `user-USERNAME`

**Senha:** `PASSWORD`

{% hint style="warning" %}
**Observação:** Não se esqueça de adicionar `user-` prefixo ao seu nome de usuário.
{% endhint %}

Para Self-Service Dedicated Datacenter Proxies (adquiridos pelo painel da Oxylabs), a porta indica o número sequencial de um endereço IP do conjunto adquirido [lista de proxies adquirida](/products/pt-br/proxies/dedicated-datacenter-proxies/self-service/proxy-list.md). Se você quiser obter um IP diferente a cada solicitação, altere a Porta para `8000` para ativar [rotação de proxy](/products/pt-br/proxies/dedicated-datacenter-proxies/self-service/proxy-rotation.md).

#### ISP Proxies

```java
final class ProxySetup {
    static final String ENDPOINT = "isp.oxylabs.io:8001"; //host:port
    static final String USERNAME = "user-USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `isp.oxylabs.io`

**Porta:** `8001`

**Nome de usuário:** `user-USERNAME`

**Senha:** `PASSWORD`

{% hint style="warning" %}
**Observação:** Não se esqueça de adicionar `user-` prefixo ao seu nome de usuário.
{% endhint %}

Com ISP Proxies, a porta é atribuída a um endereço IP específico e à sua localização. Portanto, a porta `8001` sempre escolherá o primeiro IP da sua [lista de proxies adquirida](/products/pt-br/proxies/isp-proxies/proxy-list.md). Se você quiser obter um IP diferente a cada solicitação, altere a Porta para `8000` para ativar [rotação de proxy](/products/pt-br/proxies/isp-proxies/proxy-rotation.md).

#### Dedicated ISP Proxies

```java
final class ProxySetup {
    static final String ENDPOINT = "disp.oxylabs.io:8001"; //host:port
    static final String USERNAME = "user-USERNAME";
    static final String PASSWORD = "PASSWORD";
}
```

**Host:** `disp.oxylabs.io`

**Porta:** `8001`

**Nome de usuário:** `user-USERNAME`

**Senha:** `PASSWORD`

{% hint style="warning" %}
**Observação:** Não se esqueça de adicionar `user-` prefixo ao seu nome de usuário.
{% endhint %}

Você precisará escolher a porta atribuída a um endereço IP da lista comprada [lista de proxies adquirida](/products/pt-br/proxies/dedicated-isp-proxies/self-service/proxy-list.md), que você pode encontrar no painel da Oxylabs. A `8001` porta selecionará o primeiro endereço IP da sua lista para todas as solicitações. Use a porta `8000` para rotação automática [de IP do proxy](/products/pt-br/proxies/dedicated-isp-proxies/self-service/proxy-rotation.md).
{% endstep %}

{% step %}

### Execute o script de integração

Execute `ProxyDemo.java` diretamente na sua IDE, ou compile e execute o arquivo JAR empacotado usando Maven pelo terminal:

```
mvn clean package
java -cp target/oxylabs-selenium-jar-with-dependencies.jar ProxyDemo
```

Ao executar, `ProxyDemo` inicializa o driver, roteia o tráfego pelo endpoint especificado da Oxylabs via BrowserMob e imprime o endereço IP de saída resolvido.

No entanto, talvez seja necessário instalar certificados adequados para habilitar o suporte a SSL e evitar avisos relacionados a certificado abordados na etapa seguinte.
{% endstep %}

{% step %}

### Tratamento de certificado SSL (opcional)

O código usa BrowserMob Proxy, que oferece suporte total a MITM. No entanto, ainda podem aparecer avisos de certificado inválido.

#### Bypass programático (recomendado)

Passe `--ignore-certificate-errors` por meio de `ChromeOptions` em `ProxyHelper.java` para ignorar a validação de SSL durante a execução automatizada.

#### Instalação do certificado raiz

Importe o certificado raiz do BrowserMob ([ca-certificate-rsa.cer](https://github.com/oxylabs/selenium-proxy-integration-java/blob/main/certificates/ca-certificate-rsa.cer)) para o armazenamento de confiança do seu sistema operacional

* **macOS:** Arraste `ca-certificate-rsa.cer` para *Keychain Access* > *seção Sistema* > *Certificados*, clique com o botão direito e selecione *Sempre confiar*.
* **Windows:** Clique duas vezes `ca-certificate-rsa.cer`, selecione *Instalar certificado*, e defina o destino da importação como *Autoridades de Certificação Raiz Confiáveis*.
  {% endstep %}
  {% endstepper %}

Se quiser saber mais sobre web scraping com Selenium, leia nosso [**post no blog**](https://oxylabs.io/blog/selenium-web-scraping).

Encontre a postagem original do blog sobre integração com Selenium [aqui](https://oxylabs.io/resources/integrations/selenium).


---

# 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/pt-br/proxy-integrations/selenium.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.
