Choisir son arsenal : proxys gratuits dans la nature
Dans l'agora numérique, les proxies se dressent comme des sentinelles éphémères – des portes d'entrée vers l'anonymat, la liberté et, hélas, la fragilité. Le proxie libre, cette créature insaisissable, offre un passage, mais à un prix : l'instabilité, l'étranglement ou, dans le pire des cas, la trahison. Examinons le paysage avec une clarté cartésienne :
Type de proxy | Anonymat | Vitesse | Fiabilité | Exemple de source |
---|---|---|---|---|
Proxys HTTP/HTTPS | Moyen | Modéré | Faible | https://free-proxy-list.net/ |
Proxys SOCKS4/5 | Haut | Faible | Très faible | https://socks-proxy.net/ |
Proxy transparents | Aucun | Rapide | Faible | https://spys.one/ |
Avertissement: Les proxys gratuits sont publics et peuvent être compromis. N'envoyez jamais d'identifiants ni de données sensibles par leur intermédiaire.
Récolte des procurations : le rituel
Une danse avec l'éphémère exige l'automatisation. Invoquons Python et ses acolytes, demandes
et BelleSoup
, pour récupérer les proxys :
importer des requêtes depuis bs4 import BeautifulSoup def fetch_proxies(): url = 'https://free-proxy-list.net/' soup = BeautifulSoup(requests.get(url).content, 'html.parser') proxies = [] pour la ligne dans soup.find('table', id='proxylisttable').tbody.find_all('tr'): tds = row.find_all('td') si tds[6].text == 'yes': # HTTPS uniquement proxy = f"{tds[0].text}:{tds[1].text}" proxies.append(proxy) renvoie les proxies
Procurations en rotation : l'art du déguisement
Amazon et eBay, ces forteresses numériques, manient des marteaux d'interdiction avec une précision mécanique. La solution ? Alterner les proxys, modifier les agents utilisateurs et injecter des retards : une chorégraphie de diversion.
import random import time proxies = fetch_proxies() user_agents = [ # Un bouquet d'agents utilisateurs 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)...', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...', # Ajouter plus ] def get_random_headers(): return {'User-Agent': random.choice(user_agents)} def get_random_proxy(): return {'http': f"http://{random.choice(proxies)}", 'https': f"http://{random.choice(proxies)}"} def request_with_proxy(url): for attempt in range(5): proxy = get_random_proxy() headers = get_random_headers() try: response = requests.get(url, headers=headers, proxies=proxy, timeout=5) si response.status_code == 200 : renvoie response.text sauf Exception : continue time.sleep(random.uniform(1, 3)) renvoie None
Scraping Amazon : naviguer dans le labyrinthe
Amazon met en place des mesures anti-bots : CAPTCHA, contenu dynamique, interdictions de propriété intellectuelle. Pour le scraping à petite échelle, concentrez-vous sur les fiches produits ; pour tout ce qui dépasse ce cadre, tenez compte des limites éthiques et légales.
Exemple : Extraction des titres de produits
de bs4 import BeautifulSoup def scrape_amazon_product_title(asin): url = f"https://www.amazon.com/dp/{asin}" html = request_with_proxy(url) if not html: print("Échec de la récupération de la page.") return None soup = BeautifulSoup(html, 'html.parser') title = soup.find('span', id='productTitle') return title.text.strip() if title else None asin = 'B08N5WRWNW' # Exemple d'ASIN print(scrape_amazon_product_title(asin))
Scraping eBay : à travers le bazar
eBay, moins vigilant, utilise toujours la limitation du taux de conversion et la détection des robots, moins strictes, mais présentes. Concentrez-vous sur la page de l'article (par exemple, https://www.ebay.com/itm/ITEMID).
Exemple : Extraction du prix d'un article
def scrape_ebay_price(item_id): url = f"https://www.ebay.com/itm/{item_id}" html = request_with_proxy(url) if not html: print("Échec de la récupération de la page.") return None soup = BeautifulSoup(html, 'html.parser') price = soup.find('span', id='prcIsum') return price.text.strip() if price else None item_id = '234567890123' # Exemple d'ID d'article print(scrape_ebay_price(item_id))
Obfuscation : la poésie de l'évasion
- Randomiser les intervalles de requête :
python
time.sleep(random.uniform(2, 6)) - Mélanger les proxys et les agents utilisateurs à chaque demande.
- Mettre en pause ou changer de proxy sur les détections HTTP 503, 403 ou CAPTCHA.
Limites et légalités :
Site | Demandes max./h (est.) | Principales contre-mesures |
---|---|---|
Amazone | ~50-100 | Captchas, interdictions IP, vérifications JS |
eBay | ~200-300 | Limitation de débit, Captchas |
Meilleures pratiques :
- Testez les proxys pour vérifier leur vivacité avant utilisation (beaucoup meurent en quelques heures).
- Respectez le fichier robots.txt : ne pénétrez pas dans les lieux interdits.
- Limitez la concurrence (évitez les tempêtes de threads avec des proxys gratuits).
- Analysez avec élégance : les mises en page des sites mutent comme les sous-bois printaniers.
Outils et bibliothèques :
Tâche | Outil recommandé |
---|---|
Scraping de proxy | BelleSoup |
Requêtes HTTP | requêtes, httpx |
Analyse | BelleSoup, lxml |
Rotation des procurations | demandes + personnalisées |
Exemple de routine de validation de proxy :
def validate_proxy(proxy) : essayez : r = requests.get('https://httpbin.org/ip', proxies={'http': proxy, 'https': proxy}, timeout=3) retournez r.status_code == 200 sauf : retournez False proxies = [p pour p dans proxies si validate_proxy(p)]
Une dernière note sur la persévérance :
Utiliser des proxys gratuits, c'est courir après l'horizon : en perpétuel changement, toujours hors de portée. Alternez, adaptez-vous et n'oubliez jamais que chaque requête est une goutte d'eau dans l'océan du commerce numérique. Le Web est un être vivant ; traitez-le comme tel, et il pourrait bien vous livrer ses secrets.
Commentaires (0)
Il n'y a pas encore de commentaires ici, vous pouvez être le premier !