# Conexão resetada pelo par (ECONNRESET) através de um proxy

> Conexão resetada pelo par (ECONNRESET, socket hang up) através de um proxy: conexões keep-alive obsoletas, saídas derrubadas, firewalls. Causas e correções.

- URL: https://crawlrelay.com/pt/docs/errors/connection-reset/
- Última atualização: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

Erro de socket: a mensagem exata em cada ferramenta, as causas prováveis em ordem, e o conserto que funciona.

**Resposta rápida — O que Connection reset by peer (ECONNRESET) significa com um proxy?**

**Conexão resetada pelo par** significa que o outro lado fechou a conexão TCP abruptamente, com um reset ao invés de um fechamento normal. Através dos proxies residenciais do CrawlRelay, as causas comuns são uma conexão keep-alive reutilizada que ficou obsoleta, uma saída que caiu ou um firewall do destino que corta conexões. Refaça requisições seguras em uma nova conexão e não mantenha conexões ociosas por muito tempo.

## Connection reset by peer (ECONNRESET) de relance

| Atributo | Valor |
| --- | --- |
| Erro | Connection reset by peer (ECONNRESET) |
| Tipo | Erro de socket |
| Enviado por | A pilha de rede, depois que o outro lado fechou a conexão abruptamente |
| Definido em | TCP reset (RST segment): RFC 9293 |
| Tentar novamente? | Sim, para requisições seguras, em uma nova conexão |
| Primeira verificação | Verifique se os resets ocorrem após conexões reutilizadas ociosas ou em conexões novas |

## O que Connection reset by peer (ECONNRESET) significa?

O TCP pode encerrar uma conexão graciosamente ou com um reset. Um reset informa à sua máquina que o outro lado descartou a conexão, então qualquer dado em trânsito é perdido. Python gera `ConnectionResetError`; Node.js gera `ECONNRESET` ou 'socket hang up'.

"Par" é quem seu socket contata diretamente, que é o gateway proxy. O reset pode se originar mais adiante na cadeia e ser repassado.

## Como a connection reset aparece em Python, curl, Node.js e navegadores?

A mesma falha aparece de forma diferente em cada ferramenta. Estas são as mensagens para buscar nos seus logs:

- **Python:** `ConnectionResetError: [Errno 104] Connection reset by peer`, ou `[WinError 10054]` no Windows
- **requests:** `ConnectionError(ProtocolError('Connection aborted.', ConnectionResetError(...)))`
- **Node.js:** `Error: socket hang up` ou `read ECONNRESET`
- **curl:** `curl: (56) Recv failure: Connection reset by peer`

## O que causa a connection reset?

Mais provável inicialmente:

- **Conexões keep-alive obsoletas.** Uma conexão em pool ficou ociosa e foi fechada no outro lado; a próxima requisição nessa conexão falha imediatamente.
- **Uma saída derrubada**, que encerra todas as conexões que a usavam.
- **Um firewall no destino** que reseta conexões que não gosta.
- **Uploads ou downloads longos** cortados por um limite de inatividade em algum ponto do caminho.

## Como diagnosticar a connection reset passo a passo?

1. Verifique se os resets acontecem na primeira requisição de uma conexão ou após reutilização ociosa.
2. Conte os resets por host: um host indica o destino; todos os hosts indicam o caminho ou o pool.
3. Observe o tempo: resets após exatamente N segundos ociosos indicam um limite de ociosidade.

*Teste a URL com erro usando curl (porta HTTP, modo verbose)*

```bash
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL
```

## Como corrigir a connection reset?

- **Refaça requisições idempotentes** (GET, HEAD) uma vez em uma nova conexão.
- **Reduza a reutilização ociosa**: feche conexões em pool que ficaram ociosas por mais de alguns segundos, ou abra uma nova conexão por requisição quando você precisa de um novo IP de qualquer forma.
- **Encerre uma sessão fixa** que reseta repetidamente e inicie uma nova.
- **Desacelere** em hosts que resetam sob carga.

*Python: tentar novamente com Retry-After, backoff exponencial e jitter*

```python
import random
import time

import requests

PROXY = "http://USERNAME:PASSWORD@gw.crawlrelay.com:7777"
PROXIES = {"http": PROXY, "https": PROXY}
RETRY_STATUSES = {429, 502, 503, 504}


def fetch(url, attempts=5, timeout=(10, 30)):
    for attempt in range(attempts):
        try:
            r = requests.get(url, proxies=PROXIES, timeout=timeout)
        except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
            r = None  # dropped exit, reset or timeout: a new connection gets a new exit
        if r is not None and r.status_code not in RETRY_STATUSES:
            return r
        retry_after = r.headers.get("Retry-After", "") if r is not None else ""
        if retry_after.isdigit():
            wait = int(retry_after)
        else:
            wait = min(60, 2 ** attempt) + random.uniform(0, 1)
        time.sleep(wait)
    raise RuntimeError("giving up on %s after %d attempts" % (url, attempts))
```

## Devo tentar novamente após a connection reset?

Refaça um reset uma vez para requisições seguras como GET. Não repita automaticamente requisições POST que alteram dados: a primeira pode já ter sido processada. Uma série de resets em um host significa que ele está cortando sua conexão; diminua o ritmo lá.

## Como Connection reset by peer (ECONNRESET) se aplica ao CrawlRelay?

No CrawlRelay, a rotação acontece por nova conexão. Um cliente que mantém uma conexão viva mantém a mesma saída em todas as requisições nela, então uma saída derrubada reseta essa conexão. Abra a conexão novamente para obter uma saída nova; o [guia de sessões](https://crawlrelay.com/pt/docs/sessions/) mostra os padrões.

Gateway: `gw.crawlrelay.com`, porta 7777 (HTTP, HTTPS via CONNECT) e porta 7778 (SOCKS5). Formato do usuário: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. Relacionado: [502 Bad Gateway](https://crawlrelay.com/pt/docs/errors/502-bad-gateway/) · [Read timed out](https://crawlrelay.com/pt/docs/errors/read-timeout/) · [Guia de sessões](https://crawlrelay.com/pt/docs/sessions/).

## Connection reset by peer (ECONNRESET): perguntas que desenvolvedores fazem

### Por que recebo 'socket hang up' em Node.js com um proxy?

A conexão foi fechada antes da resposta chegar. Com proxy, causas comuns são um socket keep-alive reutilizado que ficou obsoleto, uma saída derrubada ou um destino que cortou a conexão. Refaça requisições GET em um socket novo e limite o tempo que sockets ociosos ficam no pool.

### Um reset de conexão é sinal de que estou bloqueado?

Às vezes. Firewalls podem resetar conexões de clientes que rejeitam, mas resets também ocorrem por motivos inofensivos em qualquer rede residencial. Veja o padrão: resets limitados a um host e que crescem com sua taxa de requisições indicam que o host está bloqueando.

### Devo desabilitar keep-alive para scraping?

Não completamente. Keep-alive economiza tempo quando você envia várias requisições ao mesmo host por uma saída fixa. Quando você quer um IP novo em cada requisição, uma nova conexão por requisição é a escolha mais limpa. Misturar ambos sem cuidado produz resets por conexão obsoleta.

## Outros erros de proxy nesta referência

- [401 Unauthorized vs 407](https://crawlrelay.com/pt/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/pt/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/pt/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/pt/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/pt/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/pt/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/pt/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/pt/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/pt/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/pt/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/pt/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/pt/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/pt/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/pt/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/pt/docs/errors/ssl-wrong-version-number/)

**Proxies residenciais com documentação que cobre os casos de falha** CrawlRelay proxies residenciais a partir de US$ 0,50/GB, tráfego que nunca expira. [Veja os preços](https://crawlrelay.com/pt/pricing/) · [Início rápido](https://crawlrelay.com/pt/docs/)

---

CrawlRelay: CrawlRelay é um serviço proxy residencial rotativo e proxies móveis 4G/5G para desenvolvedores, para scrapers e pipelines de dados de IA: tráfego pay-as-you-go que não expira a partir de US$ 0,50/GB, pago com cripto, sem upload de documento. Sem KYC — sem ID, sem selfie, sem documentos. Pague com cripto.
