# Instruções do navegador (Beta)

Ao usar Custom Browser Instructions, você pode definir suas próprias instruções específicas do navegador que são executadas ao renderizar JavaScript.

{% hint style="success" %}
Gerar **Instruções do navegador automaticamente** no [**Web Scraper API Playground**](https://dashboard.oxylabs.io/?route=/api-playground) no painel da Oxylabs. Configure ações do navegador, teste-as e exporte as instruções geradas em formato JSON.&#x20;
{% endhint %}

### Como usar?

Para usar instruções do navegador, forneça um conjunto de `browser_instructions` ao criar um job.

Vamos supor que você queira pesquisar o termo `pizza boxes` em um site.

<figure><img src="https://1214208351-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FVVCJxliUYBEPcG34IThU%2Fbi_1.png?alt=media&#x26;token=1f689105-300d-49ce-a38a-145fd925f54f" alt=""><figcaption></figcaption></figure>

Um exemplo de parâmetros do job seria o seguinte:

{% code overflow="wrap" %}

```bash
curl -k -x https://unblock.oxylabs.io:60000 \
-U 'USERNAME:PASSWORD' \
'https://www.ebay.com' \
-H 'x-oxylabs-render: html' \
-H "x-oxylabs-browser-instructions: [{\"type\":\"input\",\"value\":\"pizza boxes\",\"selector\":{\"type\":\"xpath\",\"value\":\"\/\/input[@class='gh-tb ui-autocomplete-input']\"}},{\"type\":\"click\",\"selector\":{\"type\":\"xpath\",\"value\":\"\/\/input[@type='submit']\"}},{\"type\":\"wait\",\"wait_time_s\":5}]"
```

{% endcode %}

**Etapa 1.** Você deve fornecer o `x-oxylabs-render: html` parâmetro.

**Etapa 2.** As instruções do navegador devem ser descritas no campo `x-oxylabs-browser_instructions` .

{% hint style="info" %}
As instruções do navegador fornecidas como valor do cabeçalho devem estar escapadas em JSON e não conter espaços extras.
{% endhint %}

As instruções de navegador de exemplo acima especificam que o objetivo é inserir um termo de pesquisa `pizza boxes` em um campo de busca, clicar no botão de `pesquisa` e aguardar 5 segundos para o conteúdo carregar.

O resultado coletado deve ser parecido com o seguinte:

```html
<!doctype html><html>
Conteúdo após executar as instruções      
</html>
```

O HTML coletado deve ser assim:

<figure><img src="https://1214208351-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2Fskb19h4I9wV9pBJSQIP6%2Fbi_2.png?alt=media&#x26;token=36c0fa1e-7bb6-4bf6-8047-ab9d9bbd20dd" alt=""><figcaption></figcaption></figure>

#### Obtendo recursos do navegador <a href="#fetching-browser-resources" id="fetching-browser-resources"></a>

Fornecemos uma instrução de navegador independente para obter recursos do navegador.

A função é definida aqui:

Usando `fetch_resource` fará com que o job retorne a primeira ocorrência de um recurso Fetch/XHR que corresponda ao formato fornecido, em vez do HTML que está sendo alvo.

Vamos supor que queremos direcionar um recurso GraphQL que é obtido ao visitar uma página de produto organicamente no navegador. Vamos fornecer as informações do job assim:

{% code overflow="wrap" %}

```bash
curl -k -x https://unblock.oxylabs.io:60000 \
-U 'USERNAME:PASSWORD' \
'https://www.example.com/product-page/123' \
-H 'x-oxylabs-render: html' \
-H "x-oxylabs-browser-instructions: [{\"type\": \"fetch_resource\",\"filter\": \"\/graphql\/product-info\/123\"}]"
```

{% endcode %}

Essas instruções vão resultar em um resultado assim:

```html
{"product_id": 123, "description": "", "price": 456}
```

### Lista de instruções de navegador suportadas <a href="#list-of-supported-browser-instructions" id="list-of-supported-browser-instructions"></a>

{% content-ref url="../../../solucoes-de-scraping/web-scraper-api/features/js-rendering-and-browser-control/browser-instructions/list-of-instructions" %}
[list-of-instructions](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features/js-rendering-and-browser-control/browser-instructions/list-of-instructions)
{% endcontent-ref %}

### Códigos de status <a href="#status-codes" id="status-codes"></a>

Veja nossos códigos de resposta descritos [**aqui**](https://developers.oxylabs.io/documentation/pt-br/solucoes-avancadas-de-proxy/web-unblocker/response-codes).

Os códigos de status relacionados à validação das instruções estão documentados [**aqui**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features/js-rendering-and-browser-control/browser-instructions/list-of-instructions#instructions-validation).
