# Localização do proxy

Use o `geo_location` parâmetro para selecionar a localização do servidor proxy. Isso permite fazer scraping de dados como se você estivesse navegando de outro país.&#x20;

<details>

<summary>Lista de valores geo_location suportados</summary>

```
Ilhas Aaland
Afeganistão
Albânia
Argélia
Samoa Americana
Andorra
Angola
Anguila
Antártida
Antígua e Barbuda
Argentina
Armênia
Aruba
Austrália
Áustria
Azerbaijão
Bahamas
Bahrein
Bangladesh
Barbados
Bielorrússia
Belgium
Belize
Benim
Bermudas
Butão
Estado Plurinacional da Bolívia
Bonaire Sint Eustatius e Saba
Bósnia e Herzegovina
Botsuana
Ilha Bouvet
Brasil
Território Britânico do Oceano Índico
Brunei Darussalam
Bulgária
Burquina Faso
Burundi
Cabo Verde
Camboja
Camarões
Canada
Ilhas Cayman
República Centro-Africana
Chade
Chile
China
Ilha Christmas
Ilhas Cocos (Keeling)
Colombia
Comores
Congo
República Democrática do Congo
Ilhas Cook
Costa Rica
Costa do Marfim
Croácia
Cuba
Curaçao
Chipre
Tchéquia
Dinamarca
Djibuti
Dominica
República Dominicana
Equador
Egito
El Salvador
Guiné Equatorial
Eritreia
Estônia
Eswatini
Etiópia
Ilhas Malvinas [Falkland]
Ilhas Faroe
Fiji
Finlândia
France
Guiana Francesa
Polinésia Francesa
Territórios Franceses do Sul
Gabão
Gâmbia
Geórgia
Germany
Gana
Gibraltar
Grécia
Groenlândia
Granada
Guadalupe
Guam
Guatemala
Guernsey
Guiné
Guiné-Bissau
Guiana
Haiti
Ilha Heard e Ilhas McDonald
Santa Sé
Honduras
Hong Kong
Hungria
Islândia
Índia
Indonésia
República Islâmica do Irã
Iraque
Irlanda
Ilha de Man
Israel
Itália
Jamaica
Japan
Jersey
Jordânia
Cazaquistão
Quênia
Kiribati
Coreia
Kuwait
Quirguistão
República Democrática Popular do Laos
Letônia
Líbano
Lesoto
Libéria
Líbia
Liechtenstein
Lituânia
Luxemburgo
Macau
Madagascar
Malawi
Malásia
Maldivas
Mali
Malta
Ilhas Marshall
Martinica
Mauritânia
Maurício
Mayotte
México
Estados Federados da Micronésia
República da Moldávia
Mônaco
Mongólia
Montenegro
Montserrat
Marrocos
Moçambique
Mianmar
Namíbia
Nauru
Nepal
Netherlands
Nova Caledônia
Nova Zelândia
Nicarágua
Níger
Nigéria
Niue
Ilha Norfolk
Ilhas Marianas do Norte
Noruega
Omã
Paquistão
Palau
Estado da Palestina
Panamá
Papua-Nova Guiné
Paraguai
Peru
Filipinas
Pitcairn
Polônia
Portugal
Porto Rico
Catar
República da Macedônia do Norte
Reunião
Romania
Rússia
Ruanda
Saint Barthélemy
Santa Helena, Ascensão e Tristão da Cunha
São Cristóvão e Névis
Santa Lúcia
Saint Martin parte francesa
São Pedro e Miquelão
São Vicente e Granadinas
Samoa
San Marino
São Tomé e Príncipe
Arábia Saudita
Senegal
Sérvia
Seicheles
Serra Leoa
Singapura
Sint Maarten parte holandesa
Eslováquia
Eslovênia
Ilhas Salomão
Somália
África do Sul
Geórgia do Sul e Ilhas Sandwich do Sul
Sudão do Sul
Spain
Sri Lanka
Sudão
Suriname
Svalbard e Jan Mayen
Suécia
Suíça
República Árabe Síria
Taiwan Província da China
Tajiquistão
República Unida da Tanzânia
Tailândia
Timor-Leste
Togo
Toquelau
Tonga
Trinidad e Tobago
Tunísia
Turquia
Turcomenistão
Ilhas Turks e Caicos
Tuvalu
Uganda
Ucrânia
Emirados Árabes Unidos
United Kingdom
United States
Ilhas Menores Distantes dos Estados Unidos
Uruguai
Uzbequistão
Vanuatu
República Bolivariana da Venezuela
Vietnã
Ilhas Virgens Britânicas
Ilhas Virgens dos EUA
Wallis e Futuna
Saara Ocidental
Iêmen
Zâmbia
Zimbábue
```

</details>

{% hint style="warning" %}
`geo_location` a função do parâmetro é diferente para [**SERP**](/products/pt-br/web-scraper-api/features/localization/serp-localization.md) e [**E-Commerce**](/products/pt-br/web-scraper-api/features/localization/e-commerce-localization.md) localização. Leia mais nas respectivas seções.
{% endhint %}

### Exemplo de solicitação

Este exemplo recupera uma página de produto usando um proxy na Alemanha.

{% tabs %}
{% tab title="cURL" %}

```shell
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
        "source": "universal",
        "url": "https://sandbox.oxylabs.io/products/1",
        "geo_location": "Germany"
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint


# Estruture o payload.
payload = {
    'source': 'universal',
    'url': 'https://sandbox.oxylabs.io/products/1',
    'geo_location': 'Germany',
}

# Obtenha a response.
response = requests.request(
    'POST',
    'https://realtime.oxylabs.io/v1/queries',
    auth=('USERNAME', 'PASSWORD'),
    json=payload,
)

# Em vez de uma resposta com status do job e URL dos resultados, isso retornará o
# resposta JSON com o resultado.
pprint(response.json())
```

{% endtab %}

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

```javascript
const https = require("https");

const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "universal",
    url: "https://sandbox.oxylabs.io/products/1",
    geo_location: "Germany",
};

const options = {
    hostname: "realtime.oxylabs.io",
    path: "/v1/queries",
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        Authorization:
            "Basic " + Buffer.from(`${username}:${password}`).toString("base64"),
    },
};

const request = https.request(options, (response) => {
    let data = "";

    response.on("data", (chunk) => {
        data += chunk;
    });

    response.on("end", () => {
        const responseData = JSON.parse(data);
        console.log(JSON.stringify(responseData, null, 2));
    });
});

request.on("error", (error) => {
    console.error("Erro:", error);
});

request.write(JSON.stringify(body));
request.end();
```

{% endtab %}

{% tab title="HTTP" %}

```http
# A string inteira que você enviar precisa estar codificada em URL.

https://realtime.oxylabs.io/v1/queries?source=universal&url=https%3A%2F%2Fsandbox.oxylabs.io%2Fproducts%2F1&geo_location=Germany&access_token=12345abcde
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'universal',
    'url' => 'https://sandbox.oxylabs.io/products/1',
    'geo_location' => 'Germany',
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "USERNAME" . ":" . "PASSWORD");

$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
echo $result;

if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);
```

{% endtab %}

{% tab title="Golang" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	const Username = "USERNAME"
	const Password = "PASSWORD"

	payload := map[string]interface{}{
		"source":       "universal",
		"url":          "https://sandbox.oxylabs.io/products/1",
		"geo_location": "Germany",
	}

	jsonValue, _ := json.Marshal(payload)

	client := &http.Client{}
	request, _ := http.NewRequest("POST",
		"https://realtime.oxylabs.io/v1/queries",
		bytes.NewBuffer(jsonValue),
	)

	request.SetBasicAuth(Username, Password)
	response, _ := client.Do(request)

	responseText, _ := ioutil.ReadAll(response.Body)
	fmt.Println(string(responseText))
}

```

{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;

namespace OxyApi
{
    class Program
    {
        static async Task Main()
        {
            const string Username = "USERNAME";
            const string Password = "PASSWORD";

            var parameters = new {
                source = "universal",
                url = "https://sandbox.oxylabs.io/products/1",
                geo_location = "Germany"
            };

            var client = new HttpClient();

            Uri baseUri = new Uri("https://realtime.oxylabs.io");
            client.BaseAddress = baseUri;

            var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/v1/queries");
            requestMessage.Content = JsonContent.Create(parameters);

            var authenticationString = $"{Username}:{Password}";
            var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes(authenticationString));
            requestMessage.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);

            var response = await client.SendAsync(requestMessage);
            var contents = await response.Content.ReadAsStringAsync();

            Console.WriteLine(contents);
        }
    }
}
```

{% endtab %}

{% tab title="Java" %}

```java
package org.example;

import okhttp3.*;
import org.json.JSONObject;
import java.util.concurrent.TimeUnit;

public class Main implements Runnable {
    private static final String AUTHORIZATION_HEADER = "Authorization";
    public static final String USERNAME = "USERNAME";
    public static final String PASSWORD = "PASSWORD";

    public void run() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("source", "universal");
        jsonObject.put("url", "https://sandbox.oxylabs.io/products/1");
        jsonObject.put("geo_location", "Germany");

        Authenticator authenticator = (route, response) -> {
            String credential = Credentials.basic(USERNAME, PASSWORD);
            return response
                    .request()
                    .newBuilder()
                    .header(AUTHORIZATION_HEADER, credential)
                    .build();
        };

        var client = new OkHttpClient.Builder()
                .authenticator(authenticator)
                .readTimeout(180, TimeUnit.SECONDS)
                .build();

        var mediaType = MediaType.parse("application/json; charset=utf-8");
        var body = RequestBody.create(jsonObject.toString(), mediaType);
        var request = new Request.Builder()
                .url("https://realtime.oxylabs.io/v1/queries")
                .post(body)
                .build();

        try (var response = client.newCall(request).execute()) {
            if (response.body() != null) {
                try (var responseBody = response.body()) {
                    System.out.println(responseBody.string());
                }
            }
        } catch (Exception exception) {
            System.out.println("Error: " + exception.getMessage());
        }

        System.exit(0);
    }

    public static void main(String[] args) {
        new Thread(new Main()).start();
    }
}
```

{% endtab %}

{% tab title="JSON" %}

```json
{
    "source": "universal", 
    "url": "https://sandbox.oxylabs.io/products/1",
    "geo_location": "Germany"
}
```

{% endtab %}
{% endtabs %}

Usamos o método de integração síncrona [**Realtime**](/products/pt-br/web-scraper-api/integration-methods/realtime.md) em nossos exemplos. Se você quiser usar [**Proxy Endpoint**](/products/pt-br/web-scraper-api/integration-methods/proxy-endpoint.md) ou integração assíncrona [**Push-Pull**](/products/pt-br/web-scraper-api/integration-methods/push-pull.md) , consulte a seção [**métodos de integração**](/products/pt-br/web-scraper-api/integration-methods.md) .

### Sessões

Você pode forçar o mesmo endereço IP do proxy para várias solicitações incluindo o `session_id` parâmetro. Defina o ID da sessão como qualquer string alfanumérica (por exemplo, `abc123`), e todos os jobs de scraping com esse ID de sessão usarão o mesmo IP. Isso é útil para o gerenciamento de sessão quando combinado com [cookies personalizados](/products/pt-br/web-scraper-api/features/http-context-and-job-management/headers-cookies-method.md#custom-cookies).

Aqui está um exemplo:

```json
{
    "source": "universal",
    "url": "https://sandbox.oxylabs.io/products",
    "geo_location": "Germany",
    "session_id": "abc123"
}
```


---

# 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/web-scraper-api/features/localization/proxy-location.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.
