# Controle de sessão

Os Proxies Residenciais têm dois modos de sessão: rotação (padrão) e sessão fixa. O modo é alternado pelos parâmetros do username, sem nenhuma configuração no backend.

## Modo de rotação (padrão)

Sem parâmetros de sessão, **cada requisição de conexão recebe automaticamente um novo IP**:

```bash
curl -x proxy.eproxies.net:23333 -U "USERNAME-pool-flow-region-US:PASSWORD" https://ipinfo.io
# Execute duas vezes seguidas e os IPs retornados serão diferentes
```

Ideal para: coleta de dados, monitoramento de preços, verificação de anúncios e outros cenários em que cada requisição deve vir de um IP diferente.

## Modo de sessão fixa (sticky)

Acrescente `-sid-{8 caracteres aleatórios}-ttl-{minutos}`; o mesmo `sid` reutiliza o mesmo IP durante o período do `ttl`:

```bash
curl -x proxy.eproxies.net:23333 -U "USERNAME-pool-flow-region-US-sid-a1b2c3d4-ttl-30:PASSWORD" https://ipinfo.io
# Repetindo a requisição com o mesmo sid em até 30 minutos, o IP retornado é o mesmo
```

| Parâmetro | Descrição |
| --- | --- |
| `sid` | identificador de sessão: 8 caracteres alfanuméricos aleatórios, gerados por você; cada sid corresponde a uma sessão independente |
| `ttl` | tempo de retenção do IP (minutos), **1–120** |

Ideal para: login em contas, formulários de múltiplas etapas, fluxos de carrinho de compras e outras operações que exigem persistência de sessão.

## Dicas de gerenciamento de sessão

**Trocar de IP ativamente**: use um novo `sid` para obter imediatamente um novo IP, sem precisar esperar o ttl expirar.

**Múltiplas sessões em paralelo**: `sid`s diferentes são independentes entre si; é possível manter simultaneamente quantas sessões paralelas de IP fixo você quiser:

```python
import random, string, requests

def make_session_proxy(country: str) -> dict:
    sid = "".join(random.choices(string.ascii_lowercase + string.digits, k=8))
    url = (
        f"http://USERNAME-pool-flow-region-{country}-sid-{sid}-ttl-30:PASSWORD"
        "@proxy.eproxies.net:23333"
    )
    return {"http": url, "https": url}

# 10 sessões independentes com IP fixo dos EUA
sessions = [make_session_proxy("US") for _ in range(10)]
for proxies in sessions:
    print(requests.get("https://ipinfo.io", proxies=proxies, timeout=30).json()["ip"])
```

> Os IPs residenciais vêm de dispositivos reais; se o dispositivo ficar off-line durante uma sessão fixa, o IP pode mudar. Em fluxos com alta exigência de confiabilidade, recomendamos verificar na camada de negócio se o IP de saída mudou.
