Comprendre les proxys dans l'automatisation web
Les proxys agissent comme des agents clandestins sur Internet, masquant votre adresse IP et vous permettant de naviguer discrètement sur le web. Dans le contexte de l'automatisation web – où Selenium et Puppeteer s'activent dans l'interface du navigateur – les proxys sont indispensables pour contourner les limitations de débit, les restrictions géographiques et la surveillance. Les proxys gratuits, bien que instables et éphémères, peuvent suffire pour des tâches de scraping ou de test légères et non critiques.
Types de proxys et leurs caractéristiques
| Type de proxy | Niveau d'anonymat | Protocoles pris en charge | Cas d'utilisation typique | Fiabilité |
|---|---|---|---|---|
| HTTP | Faible à moyen | HTTP, HTTPS | Extraction de données web simple | Faible |
| SOCKS4/5 | Haut | SOCKS4, SOCKS5 | Protocoles complexes, HTTPS | Moyen |
| Transparent | Aucun (révèle l'adresse IP) | HTTP, HTTPS | Mise en cache, usage interne | Très faible |
| Élite/Anonyme | Haut | HTTP, HTTPS | Contourner les blocages géographiques | Moyen |
Pour obtenir un recueil de listes de serveurs proxy gratuits, consultez https://free-proxy-list.net/ ou https://www.sslproxies.org/.
Utilisation de proxys gratuits avec Selenium (Python)
1. Installation des dépendances
pip installe sélénium
Téléchargez la dernière version ChromeDriver compatible avec votre version de Chrome.
2. Configuration d'un proxy dans Selenium
Le navigateur, cette marionnette numérique, peut être commandé ainsi :
from selenium import webdriver from selenium.webdriver.chrome.options import Options proxy = "186.121.235.66:8080" # Remplacez par votre proxy gratuit options = Options() options.add_argument(f'--proxy-server=http://{proxy}') driver = webdriver.Chrome(options=options) driver.get('https://httpbin.org/ip') print(driver.page_source) driver.quit()
Tableau : Commutateurs de proxy Chrome courants
| Option | Description |
|---|---|
--serveur-proxy=http://IP:PORT |
Configurer le proxy HTTP |
--serveur-proxy=https=IP:PORT |
Configurer le proxy HTTPS |
--liste-de-contournement-proxy=localhost;127.0.0.1 |
Exclure les adresses du proxy |
3. Utilisation de proxys avec authentification
Les proxys gratuits avec authentification sont des perles rares, mais si vous en trouvez un par hasard :
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options # Les proxys authentifiés nécessitent une extension Chrome pour contourner le problème. from selenium.webdriver.common.by import By import zipfile proxy_host = 'proxy.example.com' proxy_port = 8000 proxy_user = 'user' proxy_pass = 'pass' manifest_json = """ { "version": "1.0.0", "manifest_version": 2, "name": "Chrome Proxy", "permissions": [ "proxy", "tabs", "unlimitedStorage", "storage", " ", "webRequest", "webRequestBlocking" ], "background": { "scripts": ["background.js"] } } """ background_js = f""" var config = {{ mode: "fixed_servers", rules: {{ singleProxy: {{ scheme: "http", host: "{proxy_host}", port: parseInt({proxy_port}) }}, bypassList: ["localhost"] }} }}; chrome.proxy.settings.set({{value: config, scope: "regular"}}, function() {{}}); function callbackFn(details) {{ return {{ authCredentials: {{ username: "{proxy_user}", password: "{proxy_pass}" }} }}; }} chrome.webRequest.onAuthRequired.addListener( callbackFn, {{urls: [" "]}}, ['blocking'] ); """ # Créer le fichier d'extension proxy pluginfile = 'proxy_auth_plugin.zip' avec zipfile.ZipFile(pluginfile, 'w') as zp: zp.writestr("manifest.json", manifest_json) zp.writestr("background.js", background_js) chrome_options = Options() chrome_options.add_extension(pluginfile) driver = webdriver.Chrome(options=chrome_options) driver.get('https://httpbin.org/ip')
Référence: Authentification par proxy Selenium (Gist GitHub)
Utilisation de proxys gratuits avec Puppeteer (Node.js)
1. Installation de Puppeteer
npm installer puppeteer
2. Lancement de Puppeteer via un proxy
Que le navigateur revête son nouveau masque :
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: ['--proxy-server=http://186.121.235.66:8080'] }); const page = await browser.newPage(); await page.goto('https://httpbin.org/ip'); const body = await page.content(); console.log(body); await browser.close(); })();
3. Gestion de l'authentification par proxy
Lorsque le gardien exige des justificatifs :
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: ['--proxy-server=http://proxy.example.com:8000'] }); const page = await browser.newPage(); await page.authenticate({ username: 'user', password: 'pass' }); await page.goto('https://httpbin.org/ip'); const body = await page.content(); console.log(body); await browser.close(); })();
4. Rotation des proxys dans Puppeteer
Un ballet d'identités éphémères, orchestré ainsi :
const proxies = [ 'http://proxy1:port', 'http://proxy2:port', 'http://proxy3:port' ]; const puppeteer = require('puppeteer'); (async () => { for (const proxy of proxies) { const browser = await puppeteer.launch({ args: [`--proxy-server=${proxy}`] }); const page = await browser.newPage(); await page.goto('https://httpbin.org/ip'); const body = await page.content(); console.log(`Proxy: ${proxy}\n${body}\n`); await browser.close(); } })();
Sources de proxy gratuites
| Nom | URL | Caractéristiques |
|---|---|---|
| Liste de proxy gratuits | https://free-proxy-list.net/ | Liste importante de fichiers HTTP/S, mise à jour |
| Proxys SSL | https://www.sslproxies.org/ | Proxies HTTPS, mise à jour rapide |
| ProxyScrape | https://proxyscrape.com/free-proxy-list | Plusieurs protocoles |
| Espions.un | http://spys.one/en/ | Filtrage avancé |
Meilleures pratiques et limites
- Nature éphémère : Les proxys gratuits disparaissent souvent sans prévenir ; surveillez leur disponibilité à l’aide d’outils comme… Vérificateur de proxy.
- Rapidité et fiabilité : Attendez-vous à de la latence, des délais d'attente et parfois à des impasses.
- Sécurité: N’utilisez jamais de proxys gratuits pour les comptes sensibles : les attaques de type « homme du milieu » rôdent dans l’ombre.
- Considérations juridiques et éthiques : Veuillez toujours respecter le fichier robots.txt et les conditions d'utilisation.
Exemple de validation de proxy (Python)
Avant d'ouvrir votre navigateur, testez le fonctionnement du proxy :
import requests proxy = "186.121.235.66:8080" proxies = {"http": f"http://{proxy}", "https": f"http://{proxy}"} try: response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=5) print(response.json()) except Exception as e: print(f"Échec du proxy : {e}")
Commentaires (0)
Il n'y a pas encore de commentaires ici, vous pouvez être le premier !