# High-Bandwidth Proxies

## Primeiros passos

Para começar a usar nossos [**High Bandwidth Proxies** ](https://oxylabs.io/products/high-bandwidth-proxies)para coleta de dados de vídeo e áudio, entre em contato com nossa equipe de vendas para receber seu endpoint dedicado. Cada cliente recebe um endpoint de proxy exclusivo configurado para suas necessidades específicas. Para integrar diretamente esta solução com `yt_dlp` biblioteca, confira a [seção de exemplo](#example-integration-youtube-downloader).

## Configuração do endpoint

Depois de receber seu endpoint da equipe de gerenciamento de contas, você terá:

* Um endpoint de proxy dedicado
* Seu nome de usuário e senha
* Número da porta (padrão: 60000)

## Fazendo solicitações

Para uma verificação rápida da conexão, adicione `-test` parâmetro ao nome de usuário.

{% tabs %}
{% tab title="Linha de comando" %}

```bash
curl -x username-test:password@your-endpoint:60000 \
     https://ip.oxylabs.io/location
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import random

username = 'YOUR_USERNAME'
password = 'YOUR_PASSWORD'
proxy = 'your-endpoint:60000'

if not username.endswith("-test"):
    username += "-test"

proxies = {
    "http": f"http://{username}:{password}@{proxy}",
    "https": f"http://{username}:{password}@{proxy}"
}

response = requests.get(
    "https://ip.oxylabs.io/location", 
    proxies=proxies
)
print(response.text)
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const axios = require('axios');
const https = require('https');

const username = 'YOUR_USERNAME';
const password = 'YOUR_PASSWORD';
const proxyHost = 'your-endpoint';
const proxyPort = 60000;

const client = axios.create({
    httpsAgent: new https.Agent({
        rejectUnauthorized: false
    })
});

const modifiedUsername = username.endsWith("-test") ? username : username + "-test";

client.get('https://ip.oxylabs.io/location', {
    proxy: {
        host: proxyHost,
        port: proxyPort,
        auth: {
            username: modifiedUsername,
            password: password
        }
    }
})
.then(response => console.log(response.data))
.catch(error => console.error(error));
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$username = 'YOUR_USERNAME';
$password = 'YOUR_PASSWORD';
$proxyHost = 'your-endpoint';
$proxyPort = 60000;

$modifiedUsername = substr($username, -5) === "-test" ? $username : $username . "-test";

$proxy = "$proxyHost:$proxyPort";


$ch = curl_init('https://ip.oxylabs.io/location');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "$modifiedUsername:$password");

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
    "fmt"
    "io"
    "net/http"
    "net/url"
    "strings"
)

func main() {
    username, password := "YOUR_USERNAME", "YOUR_PASSWORD"
    proxyHost := "your-endpoint"
    proxyPort := "60000"

    if !strings.HasSuffix(username, "-test") {
        username += "-test"
    }

    proxyURL := fmt.Sprintf("http://%s:%s@%s:%s", username, password, proxyHost, proxyPort)

    proxy, _ := url.Parse(proxyURL)
    transport := &http.Transport{Proxy: http.ProxyURL(proxy)}
    client := &http.Client{Transport: transport}

    req, _ := http.NewRequest("GET", "https://ip.oxylabs.io/location", nil)

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {

    public static void main(String[] args) throws Exception {

        String username = "YOUR_USERNAME";
        String password = "YOUR_PASSWORD";

        if (!username.endsWith("-test")) {
            username += "-test";
        }


        Authenticator.setDefault(new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password.toCharArray());
            }
        });

        HttpClient client = HttpClient.newBuilder()
                .proxy(ProxySelector.of(new InetSocketAddress("your-endpoint", 60000)))
                .build();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://ip.oxylabs.io/location"))
                .build();

        HttpResponse<String> response = client.send(request,
                HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
```

{% endtab %}

{% tab title="C#" %}

```csharp
using System.Net;

var proxy = new WebProxy
{
    Address = new Uri("http://your-endpoint:60000"),
    Credentials = new NetworkCredential("YOUR_USERNAME-test", "YOUR_PASSWORD")
};

var handler = new HttpClientHandler { Proxy = proxy };
var client = new HttpClient(handler);

var response = await client.GetStringAsync("https://ip.oxylabs.io/location");
Console.WriteLine(response);

```

{% endtab %}
{% endtabs %}

### Definindo uma sessão para cada download

Para garantir a taxa de sucesso ideal, os proxies de alta largura de banda vêm com balanceamento de carga automatizado durante cada sessão. O `-$((1 + RANDOM % 100000))`  parâmetro ao lado do nome de usuário gera um número aleatório como ID de sessão e atribui um endereço IP diferente para cada download.&#x20;

{% tabs %}
{% tab title="Linha de comando" %}

```bash
curl -x username-$((1 + RANDOM % 100000)):password@your-endpoint:60000 \
     https://ip.oxylabs.io/location
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import random

username = 'YOUR_USERNAME'
password = 'YOUR_PASSWORD'
proxy = 'your-endpoint:60000'

random_number = random.randint(1, 100000)  # Generate random number
modified_username = f"{username}-{random_number}"

proxies = {
    "http": f"http://{modified_username}:{password}@{proxy}",
    "https": f"http://{modified_username}:{password}@{proxy}"
}

response = requests.get(
    "https://ip.oxylabs.io/location",
    proxies=proxies,
)
print(response.text)
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const axios = require('axios');
const https = require('https');

const username = 'YOUR_USERNAME';
const password = 'YOUR_PASSWORD';

const randomNumber = Math.floor(Math.random() * 100000) + 1;
const modifiedUsername = `${username}-${randomNumber}`;

const client = axios.create({
    httpsAgent: new https.Agent({
        rejectUnauthorized: false
    })
});

client.get('https://ip.oxylabs.io/location', {
    proxy: {
        host: 'your-endpoint',
        port: 60000,
        auth: {
            username: username,
            password: password
        }
    },
})
.then(response => console.log(response.data))
.catch(error => console.error(error));
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$username = 'YOUR_USERNAME';
$password = 'YOUR_PASSWORD';
$proxy = 'your-endpoint:60000';
$sessionId = rand(1, 100000);

$modifiedUsername = $username . "-" . $sessionId;

$ch = curl_init('https://ip.oxylabs.io/location');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "$modifiedUsername:$password");

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
        "fmt"
        "io"
        "math/rand"
        "net/http"
        "net/url"
)

func main() {
        username, password:= "YOUR_USERNAME", "YOUR_PASSWORD"
        proxyHost:= "your-endpoint"
        proxyPort:= "60000"

        modifiedUsername:= fmt.Sprintf("%s-%d", username, rand.Intn(100000)+1)

        proxyURL:= fmt.Sprintf("http://%s:%s@%s:%s", modifiedUsername, password, proxyHost, proxyPort)

        proxy, _:= url.Parse(proxyURL)
        transport:= &http.Transport{Proxy: http.ProxyURL(proxy)}
        client:= &http.Client{Transport: transport}

        req, _:= http.NewRequest("GET", "https://ip.oxylabs.io/location", nil)

        resp, err:= client.Do(req)
        if err!= nil {
                panic(err)
        }
        defer resp.Body.Close()

        body, _:= io.ReadAll(resp.Body)
        fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.ProxySelector;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Random;

public class Main {

    public static void main(String[] args) throws Exception {

        String username = "YOUR_USERNAME";
        String password = "YOUR_PASSWORD";

        Random rand = new Random();
        int randomNumber = rand.nextInt(100000) + 1;
        String modifiedUsername = username + "-" + randomNumber;


        Authenticator.setDefault(new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(modifiedUsername, password.toCharArray());
            }
        });

        HttpClient client = HttpClient.newBuilder()
                .proxy(ProxySelector.of(new InetSocketAddress("your-endpoint", 60000)))
                .build();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://ip.oxylabs.io/location"))
                .build();

        HttpResponse<String> response = client.send(request,
                HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
```

{% endtab %}

{% tab title="C#" %}

```csharp
using System.Net;

var random = new Random();
int sessionId = random.Next(1, 100001); // Generates a random number between 1 and 100000

var proxy = new WebProxy
{
    Address = new Uri("http://your-endpoint:60000"),
    Credentials = new NetworkCredential($"YOUR_USERNAME-{sessionId}", "YOUR_PASSWORD") // Appends sessionId to username
};

var handler = new HttpClientHandler { Proxy = proxy };
var client = new HttpClient(handler);

var response = await client.GetStringAsync("https://ip.oxylabs.io/location");
Console.WriteLine(response);
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
O endpoint ajustado lidará automaticamente com a atribuição de IP com base na sua configuração. Usá-lo garante um novo endereço IP para cada download.
{% endhint %}

## Exemplo de integração: YouTube Downloader

Aqui está um exemplo usando `yt-dlp` com nossos High Bandwidth Proxies para coleta de dados de vídeo ou áudio:

### Uso básico

Adicionar um `-test` parâmetro ao nome de usuário permite que os usuários testem a configuração da conexão.

{% tabs %}
{% tab title="Linha de comando" %}

```bash
yt-dlp --proxy username-test:password@endpoint:60000 \
"https://www.youtube.com/watch?v=WNCl-69POro"
```

{% endtab %}

{% tab title="Python" %}

```python
import yt_dlp

username = 'YOUR_USERNAME'
password = 'YOUR_PASSWORD'

if not username.endswith("-test"):
    username += "-test"
    
proxy = f'http://{username}:{password}@your-endpoint:60000'

ydl_opts = {
    'proxy': proxy,
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(['https://www.youtube.com/watch?v=WNCl-69POro'])
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Para um desempenho ideal, certifique-se de que cada vídeo seja baixado usando um endereço IP separado. Consulte a seção abaixo para orientação.
{% endhint %}

### Vários URLs com IPs diferentes

Ao usar High Bandwidth Proxies, cada vídeo é baixado com um endereço IP separado para garantir o desempenho ideal. Isso é alcançado gerando um ID de sessão exclusivo para cada solicitação, o que atribui efetivamente um novo endereço IP para cada download.

{% tabs %}
{% tab title="Linha de comando" %}

```bash
# Primeiro vídeo com um IP
yt-dlp --proxy username-$((1 + RANDOM % 100000)):password@endpoint:60000 \
"https://www.youtube.com/watch?v=6stlCkUDG_s"

# Segundo vídeo com IP diferente
yt-dlp --proxy username-$((1 + RANDOM % 100000)):password@endpoint:60000 \
"https://www.youtube.com/watch?v=gsnqXt7d1mU"
```

{% endtab %}

{% tab title="Python" %}

```python
import random
import yt_dlp

def download_with_new_ip(url, username, password):
    session_id = random.randint(1, 100000)
    proxy = f'http://{username}-{session_id}:{password}@your-endpoint:60000'

    ydl_opts = {
        'proxy': proxy
    }
    
    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        try:
            print(f"Baixando {url} com novo IP ({username}-{session_id})...")
            ydl.download([url])
            print(f"{url} baixado com sucesso")
        except Exception as e:
            print(f"Erro ao baixar {url}: {str(e)}")

def main():
    username = 'YOUR_USERNAME'
    password = 'YOUR_PASSWORD'
    
    videos = [
        'https://www.youtube.com/watch?v=6stlCkUDG_s',
        'https://www.youtube.com/watch?v=gsnqXt7d1mU'
    ]
    
    for video in videos:
        download_with_new_ip(video, username, password)

if __name__ == "__main__":
    main()

```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
A função inclui tratamento básico de erros para garantir que o processo continue mesmo se um download falhar.
{% endhint %}


---

# Agent Instructions: 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:

```
GET https://developers.oxylabs.io/products/pt-br/proxies/high-bandwidth-proxies.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
