Proxy au niveau du lancement#
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={
"server": "http://res.proxy-cyber.com:9000",
"username": "USER-cc-us-sid-run1-ttl-30m",
"password": "PASS",
})
page = browser.new_page()
page.goto("https://api.ipify.org")
print(page.inner_text("body"))
browser.close()import { chromium } from "playwright";
const browser = await chromium.launch({
proxy: { server: "http://res.proxy-cyber.com:9000", username: "USER-cc-us-sid-run1-ttl-30m", password: "PASS" },
});
const page = await browser.newPage();
await page.goto("https://api.ipify.org");
console.log(await page.innerText("body"));
await browser.close();Utilisez un identifiant de session distinct pour chaque flux de travail indépendant, lorsque la passerelle attribuée le prend en charge. Confirmez la durée autorisée et les paramètres de localisation dans les détails de votre connexion. Un appareil résidentiel peut se déconnecter avant la durée demandée ; une session persistante n'est pas une garantie de la même IP pendant des jours. Pour une adresse fixe, comparez un produit statique dédié.
Proxy par contexte#
Pour exécuter plusieurs pays ou sessions dans un seul navigateur, lancez-le avec un proxy fictif et attribuez le sien à chaque contexte. Chromium a besoin du proxy de niveau de lancement pour que les proxys par contexte soient honorés.
browser = p.chromium.launch(proxy={"server": "http://per-context"})
de = browser.new_context(proxy={"server": "http://res.proxy-cyber.com:9000", "username": "USER-cc-de-city-berlin-sid-de1-ttl-30m", "password": "PASS"})
us = browser.new_context(proxy={"server": "http://res.proxy-cyber.com:9000", "username": "USER-cc-us-state-tx-sid-us1-ttl-30m", "password": "PASS"})const browser = await chromium.launch({ proxy: { server: "http://per-context" } });
const de = await browser.newContext({ proxy: { server: "http://res.proxy-cyber.com:9000", username: "USER-cc-de-city-berlin-sid-de1-ttl-30m", password: "PASS" } });
const us = await browser.newContext({ proxy: { server: "http://res.proxy-cyber.com:9000", username: "USER-cc-us-state-tx-sid-us1-ttl-30m", password: "PASS" } });Faites correspondre le contexte à la sortie#
Donnez à chaque contexte les paramètres régionaux et le fuseau horaire de son pays, afin que l'adresse IP, la langue et l'horloge concordent : locale=\"de-DE\", timezone_id=\"Europe/Berlin\" pour le contexte berlinois. Les discordances sont un signal de bot plus fort que l’adresse IP elle-même.
Économisez des gigaoctets : bloquez ce dont vous n'avez pas besoin#
def block(route):
if route.request.resource_type in {"image", "media", "font", "stylesheet"}:
return route.abort()
return route.continue_()
page.route("**/*", block)await page.route("**/*", (route) => {
const t = route.request().resourceType();
return ["image", "media", "font", "stylesheet"].includes(t) ? route.abort() : route.continue();
});Une page rendue peut peser de 3 à 5 Mo ; son HTML et son API appellent quelques centaines de kilo-octets. Sur un réseau au Go, cette seule règle réduit la facture de 80 à 90 %.
Vérifier et dépanner#
- Ouvrez d'abord un service d'écho IP et vérifiez le pays ; puis regardez une recherche de géolocalisation de la ville.
- A
net::ERR_TUNNEL_CONNECTION_FAILEDouERR_PROXY_CONNECTION_FAILEDau lancement, cela signifie que les informations d'identification ou un paramètre sont erronés ; testez la même URL avec cURL pour lire le code de la passerelle. - WebRTC est désactivé par défaut dans les contextes Playwright uniquement si vous le bloquez ; ajouter
--disable-webrtcdurcissement du style ou blocage du STUN lorsque la confidentialité est importante.
Les questions que les gens posent#
Chaque onglet peut-il avoir un proxy différent ?
Chaque contexte peut : les onglets (pages) à l'intérieur d'un contexte partagent son proxy. Créez un contexte par session ou par pays.
Playwright prend-il en charge les proxys SOCKS5 avec authentification ?
Chromium n'accepte pas les informations d'identification SOCKS5 ; utilisez le proxy HTTP sur le port 9000 avec le nom d'utilisateur et le mot de passe, ou ajoutez l'adresse IP de votre serveur à la liste blanche et utilisez chaussettes5://res.proxy-cyber.com:9001 sans informations d'identification.