> 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/scrapy.md).

# Scrapy

Integre o Scrapy com Proxies da Oxylabs para criar crawlers web rápidos e assíncronos usando um guia passo a passo simples.

[Scrapy](https://scrapy.org/) é um framework Python de código aberto projetado para web scraping e extração de dados em grande escala. Por padrão, o Scrapy roteia as solicitações diretamente da sua rede local.

Siga as etapas abaixo para integrar os seguintes proxies da Oxylabs:

* [**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)

{% stepper %}
{% step %}

### Escolha o método de integração

O Scrapy oferece dois métodos principais para rotear solicitações por meio de proxies: [**Parâmetro Meta da Request**](#method-1-request-meta-parameter) (configuração por solicitação) e [**Middleware personalizado do Downloader**](#method-2-custom-downloader-middleware-recommended) (configuração em todo o projeto).

#### Método 1: Parâmetro Meta da Request

Passe os detalhes de autenticação do proxy diretamente para instâncias individuais `scrapy.Request` por meio do `meta` dicionário. Este método é recomendado para spiders simples ou quando diferentes solicitações exigem configurações específicas de proxy.

```python
import scrapy

class OxylabsSpider(scrapy.Spider):
    name = "oxylabs_spider"
    
    def start_requests(self):
        url = "https://ip.oxylabs.io/"
        proxy = "http://username:password@host:port"
        
        yield scrapy.Request(
            url=url,
            callback=self.parse,
            meta={"proxy": proxy}
        )

    def parse(self, response):
        ip_address = response.css("pre::text").get()
        self.logger.info(f"Connected via Oxylabs Proxy. Active IP: {ip_address}")
```

#### Método 2: Middleware personalizado do Downloader (recomendado)

Para aplicar proxies automaticamente em todas as solicitações sem alterar o código da spider, implemente um Middleware personalizado do Downloader do Scrapy.

Abra o arquivo do seu projeto Scrapy `middlewares.py` e adicione o `OxylabsProxyMiddleware` classe:

```python
class OxylabsProxyMiddleware:
    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler.settings)

    def __init__(self, settings):
        self.username = settings.get("OXYLABS_USERNAME")
        self.password = settings.get("OXYLABS_PASSWORD")
        self.endpoint = settings.get("OXYLABS_ENDPOINT")

    def process_request(self, request, spider):
        host = f"http://{self.username}:{self.password}@{self.endpoint}"
        request.meta["proxy"] = host
```

Em seguida, registre o middleware e defina suas credenciais de proxy em `settings.py`:

```python
# Oxylabs Credentials
OXYLABS_USERNAME = "username"
OXYLABS_PASSWORD = "password"
OXYLABS_ENDPOINT = "host:port"

# Enable Downloader Middleware
DOWNLOADER_MIDDLEWARES = {
    "myproject.middlewares.OxylabsProxyMiddleware": 100,
    "scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware": 110,
}
```

{% endstep %}

{% step %}

### Configure seu proxy

Ajuste os detalhes do proxy e as credenciais do usuário do proxy da Oxylabs (criadas no [painel da Oxylabs](https://dashboard.oxylabs.io/en/)) para o tipo de proxy 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:** `senha`

{% 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 proxies residenciais e móveis 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) para saber mais. A tabela abaixo apresenta uma visão geral dos parâmetros disponíveis e seus valores de exemplo.

<table><thead><tr><th width="167">Parâmetro de proxy</th><th width="498">Exemplo</th></tr></thead><tbody><tr><td><a href="/products/pt-br/proxies/residential-proxies/location-settings/select-country.md#country-specific-entry-nodes">Nó de entrada do país</a></td><td><p><strong>Host:</strong> <code>us-pr.oxylabs.io</code></p><p><strong>Porta:</strong> <code>10000</code></p></td></tr><tr><td><a href="/products/pt-br/proxies/residential-proxies/location-settings/select-country.md">País</a></td><td><strong>Usuário:</strong> <code>customer-username-cc-US</code></td></tr><tr><td><a href="/products/pt-br/proxies/residential-proxies/location-settings/select-state.md">Estado</a></td><td><strong>Usuário:</strong> <code>customer-username-st-US_texas</code></td></tr><tr><td><a href="/products/pt-br/proxies/residential-proxies/location-settings/select-city.md">Cidade</a></td><td><strong>Usuário:</strong> <code>customer-username-city-paris</code></td></tr><tr><td><a href="/products/pt-br/proxies/residential-proxies/location-settings/continent.md">Continente</a></td><td><strong>Usuário:</strong> <code>customer-username-cn-NA</code></td></tr><tr><td><a href="/products/pt-br/proxies/residential-proxies/location-settings/zip-postal-code.md">CEP/Código postal</a></td><td><strong>Usuário:</strong> <code>customer-username-cc-US-postalcode-90210</code></td></tr><tr><td><a href="/products/pt-br/proxies/residential-proxies/location-settings/asn-targeting.md">Segmentação ASN</a></td><td><strong>Usuário:</strong> <code>customer-username-ASN-21928</code></td></tr><tr><td><a href="/products/pt-br/proxies/residential-proxies/session-control.md">Sessão</a> (até 1440 minutos)</td><td><strong>Usuário:</strong> <code>customer-username-sessid-qwerty123-sesstime-1440</code></td></tr><tr><td><a href="broken://spaces/OBEE5GAZ3BuoLyZVZDxR/pages/46cc215f25431a6a3f0d77bfb8893d8bf7cb5605">Sessão persistente</a></td><td><p><strong>Host:</strong> <code>us-pr.oxylabs.io</code></p><p><strong>Porta:</strong> <code>10001</code></p></td></tr></tbody></table>

#### Datacenter Proxies

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

**Porta:** `8001`

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

**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` (HTTP) ou `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-userername`

**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:** `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 a spider

Execute sua spider do Scrapy no terminal usando o `crawl` comando:

```bash
scrapy crawl oxylabs_spider
```

Se configurado corretamente, o Scrapy executará as solicitações por meio do gateway de proxy da Oxylabs e registrará o endereço IP externo de saída atribuído.
{% endstep %}
{% endstepper %}


---

# 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/scrapy.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.
