# Instrucciones de navegador (Beta)

Cuando usas Custom Browser Instructions, puedes definir tus propias instrucciones específicas del navegador que se ejecutan al renderizar JavaScript.

{% hint style="success" %}
Generar **Instrucciones del navegador automáticamente** en el [**Web Scraper API Playground**](https://dashboard.oxylabs.io/?route=/api-playground) en el panel de Oxylabs. Configura acciones del navegador, pruébalas y exporta las instrucciones generadas en formato JSON.&#x20;
{% endhint %}

### ¿Cómo se usa?

Para usar instrucciones del navegador, proporciona un conjunto de `browser_instructions` al crear un trabajo.

Supongamos que quieres buscar el término `pizza boxes` en un sitio web.

<figure><img src="https://338917265-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>

Un ejemplo de parámetros del trabajo se vería así:

{% 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 %}

**Paso 1.** Debes proporcionar el `x-oxylabs-render: html` parámetro.

**Paso 2.** Las instrucciones del navegador deben describirse en el campo `x-oxylabs-browser_instructions` .

{% hint style="info" %}
Las instrucciones del navegador proporcionadas como valor del encabezado deben escaparse en JSON y no contener espacios extra.
{% endhint %}

Las instrucciones de navegador de ejemplo anteriores especifican que el objetivo es introducir un término de búsqueda `pizza boxes` en un campo de búsqueda, hacer clic en el botón `search` y esperar 5 segundos para que el contenido cargue.

El resultado extraído debería verse así:

```html
<!doctype html><html>
Contenido después de ejecutar las instrucciones      
</html>
```

El HTML extraído debería verse así:

<figure><img src="https://338917265-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>

#### Obtener recursos del navegador <a href="#fetching-browser-resources" id="fetching-browser-resources"></a>

Proporcionamos una instrucción de navegador independiente para obtener recursos del navegador.

La función se define aquí:

Usar `fetch_resource` hará que el trabajo devuelva la primera aparición de un recurso Fetch/XHR que coincida con el formato proporcionado en lugar del HTML que se está destinando.

Supongamos que queremos apuntar a un recurso GraphQL que se obtiene al visitar una página de producto de forma orgánica en el navegador. Proporcionaremos la información del trabajo así:

{% 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 %}

Estas instrucciones darán como resultado algo así:

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

### Lista de instrucciones de navegador compatibles <a href="#list-of-supported-browser-instructions" id="list-of-supported-browser-instructions"></a>

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

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

Consulta nuestros códigos de respuesta descritos [**aquí**](https://developers.oxylabs.io/documentation/es/soluciones-avanzadas-de-proxy/web-unblocker/response-codes).

Los códigos de estado relacionados con la validación de instrucciones están documentados [**aquí**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features/js-rendering-and-browser-control/browser-instructions/list-of-instructions#instructions-validation).
