Use a Shifter com Playwright
Execute Chromium, Firefox e WebKit através dos proxies residenciais e de ISP do Shifter — credenciais embutidas, sem necessidade de extensão sidecar. Suporte de proxy de primeira classe em Node, Python, Java e .NET.
Início Rápido
Instalar
npm install playwright Uso Básico
import { chromium } from "playwright";
const browser = await chromium.launch({
proxy: {
server: "http://p.shifter.io:443",
username: "customer-USERNAME-country-us-sid-123ABC",
password: "PASSWORD",
},
});
const page = await browser.newPage();
await page.goto("https://ipinfo.io/json");
console.log(await page.textContent("body"));
// {"ip": "154.16.xxx.xxx", "city": "New York", "country": "US", ...}
await browser.close(); Recursos
Exemplos
Segmentação Geográfica Por Contexto (um navegador, várias regiões)
Cada contexto de navegador pode ter seu próprio proxy. Inicie um contexto dos EUA, um contexto do Reino Unido e um contexto do Japão dentro de uma única instância do navegador — o recurso matador do Playwright para scraping localizado paralelo.
import { chromium } from "playwright";
const browser = await chromium.launch();
async function makeContext(country: string, sid: string) {
return browser.newContext({
proxy: {
server: "http://p.shifter.io:443",
username: `customer-USERNAME-country-${country}-sid-${sid}`,
password: "PASSWORD",
},
userAgent:
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
});
}
const [us, uk, jp] = await Promise.all([
makeContext("us", "us-001"),
makeContext("uk", "uk-001"),
makeContext("jp", "jp-001"),
]);
const [usPage, ukPage, jpPage] = await Promise.all([
us.newPage(),
uk.newPage(),
jp.newPage(),
]);
await Promise.all([
usPage.goto("https://www.example.com"),
ukPage.goto("https://www.example.co.uk"),
jpPage.goto("https://www.example.jp"),
]);
console.log({
us: await usPage.title(),
uk: await ukPage.title(),
jp: await jpPage.title(),
});
await browser.close(); Múltiplos Navegadores (Chromium / Firefox / WebKit)
A mesma configuração de proxy nos três engines. Útil para scraping entre navegadores ou para escolher o engine com menor probabilidade de acionar a detecção de bots em um determinado alvo.
import { chromium, firefox, webkit, type BrowserType } from "playwright";
const proxy = {
server: "http://p.shifter.io:443",
username: "customer-USERNAME-country-de-city-berlin-sid-456DEF",
password: "PASSWORD",
};
async function visit(engine: BrowserType, label: string) {
const browser = await engine.launch({ proxy });
const page = await browser.newPage();
await page.goto("https://example.de");
const title = await page.title();
await browser.close();
return { label, title };
}
const results = await Promise.all([
visit(chromium, "chromium"),
visit(firefox, "firefox"),
visit(webkit, "webkit"),
]);
console.log(results); Suíte de Testes do Playwright
Configure o Shifter uma vez em playwright.config.ts para que todos os testes passem pelo proxy. Use variáveis de ambiente para as credenciais para não fazer commit delas no código-fonte.
// playwright.config.ts
import { defineConfig } from "@playwright/test";
export default defineConfig({
testDir: "./tests",
workers: 4,
use: {
proxy: {
server: "http://p.shifter.io:443",
username: process.env.SHIFTER_USER!, // e.g. customer-USERNAME-country-us-sid-test
password: process.env.SHIFTER_PASS!,
},
userAgent:
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
viewport: { width: 1920, height: 1080 },
ignoreHTTPSErrors: false,
},
});
// tests/products.spec.ts
import { test, expect } from "@playwright/test";
test("US homepage renders", async ({ page }) => {
await page.goto("https://example.com");
await expect(page.getByRole("heading", { level: 1 })).toBeVisible();
});
test("Product page parses", async ({ page }) => {
await page.goto("https://example.com/products/123");
const price = await page.locator(".price").textContent();
expect(price).toMatch(/^\$\d+/);
}); Python: chromium.launch com Sessão Persistente
O Playwright é idêntico entre linguagens. A mesma configuração de proxy em formato de dicionário em Python — e o restante da API espelha a versão em Node.
# pip install playwright
# playwright install chromium
import asyncio
import secrets
from playwright.async_api import async_playwright
async def main():
sid = secrets.token_hex(4)
async with async_playwright() as p:
browser = await p.chromium.launch(
proxy={
"server": "http://p.shifter.io:443",
"username": f"customer-USERNAME-country-fr-city-paris-sid-{sid}-ttl-300",
"password": "PASSWORD",
}
)
context = await browser.new_context(
user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36",
)
page = await context.new_page()
# Multi-step flow — same residential IP across every navigation.
await page.goto("https://example.fr/login", wait_until="networkidle")
await page.fill("#email", "user@example.com")
await page.fill("#password", "secret")
await page.click("button[type=submit]")
await page.wait_for_url("**/dashboard")
rows = await page.locator(".order-row").all_text_contents()
print(f"Found {len(rows)} orders")
await browser.close()
asyncio.run(main()) Perguntas frequentes
Perguntas comuns sobre usar o Shifter com Playwright.
Passe um campo `proxy` nas opções de inicialização do navegador com `server`, `username` e `password`. Mesmo formato no Chromium, Firefox e WebKit. As credenciais são passadas inline — nenhuma extensão é necessária, e funciona em modo headless imediatamente.
Sim. Passe `proxy` para `browser.newContext()` e esse contexto usará um proxy diferente do restante do navegador. Essa é a forma mais limpa de fazer scraping de vários países em paralelo dentro de um único processo — muito mais eficiente em memória do que abrir vários navegadores.
Sim. A mesma configuração de proxy funciona nos três engines. Firefox e WebKit são úteis quando um alvo tem detecção de bots específica do Chrome. O Playwright é uma das poucas ferramentas em que trocar de engine é uma mudança de uma linha só.
Adicione um ID de sessão ao nome de usuário do proxy, por exemplo, `customer-USERNAME-country-us-sid-123ABC`. Toda navegação, requisição e aba dentro desse contexto reutilizará o mesmo IP residencial. Adicione `ttl-N` para fixá-lo por até N segundos.
Sim. Defina o campo `use.proxy` em `playwright.config.ts`. Todo teste que não o sobrescrever herda o proxy Shifter. Use variáveis de ambiente para as credenciais para que elas não acabem no controle de versão.
Sim — o Playwright tem clientes oficiais para Python, Java e .NET. A configuração de proxy usa o mesmo formato (server, username, password) em todas as linguagens. Os exemplos nesta página mostram Node e Python, mas a mesma configuração funciona em qualquer lugar.
Comece a Usar o Shifter com Playwright
Execute Chromium, Firefox e WebKit através dos 205M+ proxies residenciais e de ISP do Shifter, credenciais embutidas, sem necessidade de extensões. Funciona em Node, Python, Java e .NET.