Meteen naar de inhoud

De complete gids voor het gebruik van proxy's met Python-verzoeken

Als u Python-scrapers of -crawlers schrijft, zou het configureren van proxy-ondersteuning hoog op uw lijstje moeten staan. Met proxy's kunt u uw verzoeken via tussenliggende servers routeren, waardoor uw echte locatie verborgen blijft. Dit biedt veel mogelijkheden, zoals het op grote schaal schrapen van sites zonder geblokkeerd te worden of toegang tot inhoud die beperkt is tot bepaalde regio's.

In deze uitgebreide handleiding behandel ik alles wat u moet weten om proxy's te gebruiken met de verzoekenmodule van Python. Ik zal uitleggen waarom proxy's nuttig zijn, hoe ze werken, waar je ze kunt krijgen, best practices voor authenticatie en beveiliging, en hoe je proxy-rotatie kunt implementeren. Volg ons en ik maak van jou een proxy-professional!

Waarom proxy's essentieel zijn voor Python Scrapers

Laten we eerst kijken waarom proxy's zo belangrijk zijn voor Python-scrapers:

Voorkom dat u geblokkeerd raakt tijdens het schrapen

De belangrijkste reden om proxy's te gebruiken met Python-verzoeken is het vermijden van IP-verboden. Veel sites hebben beveiligingen om scrapers en bots te blokkeren. Ze kunnen een bepaald aantal verzoeken per minuut vanaf een bepaald IP-adres toestaan ​​voordat ze dit op de zwarte lijst zetten.

Als u uit een roterende pool van proxyservers komt, ziet u eruit als veel verschillende gebruikers. Sites zullen het moeilijker hebben om u te detecteren en te blokkeren in vergelijking met het schrapen van een enkel residentieel IP-adres.

Om u een idee van de schaal te geven: een site kan 60 tot 100 verzoeken per minuut per IP toestaan ​​voordat er een verbod wordt geactiveerd. Met zelfs maar een handvol proxy's kunt u uw schrapcapaciteit eenvoudig vertienvoudigen. Proxy's maken schaalbaarheid mogelijk.

Toegang tot geografisch beperkte inhoud

Een ander voordeel van proxy's is dat ze toegang hebben tot inhoud die beperkt is tot bepaalde regio's. De videostreamingdienst BBC iPlayer is bijvoorbeeld alleen beschikbaar voor inwoners van het Verenigd Koninkrijk. Door uw verkeer via een Britse proxy te leiden, kunt u de site bekijken alsof u in Londen bent.

Andere prominente voorbeelden zijn Hulu (alleen VS), Channel 4 (VK) en NHK World (Japan). Proxy's bieden u opties voor toegang tot regiobeperkte inhoud, waar u ook bent.

Anonimiteit en veiligheid

Het verbergen van uw echte IP-adres verbetert ook de privacy tijdens het scrapen. Sites kunnen verzoeken niet gemakkelijk herleiden tot uw locatie of identiteit.

Bedreigingsactoren kunnen ook gebruik maken van proxy's om aanvallen te maskeren, maar dat valt hier buiten het bestek. We zullen ons concentreren op de positieve kanten van het verbeteren van de privacy en anonimiteit voor webscrapen.

Schaal Python-schrapers

Met proxy's kunt u aanzienlijk meer parallelle verzoeken indienen, omdat u niet wordt beperkt door de capaciteit van één residentieel IP-adres.

In plaats van dat u de threadlimieten bereikt of geblokkeerd raakt met één IP-adres, kunt u verzoeken via meerdere proxy's routeren om het aantal verzoeken per minuut dat u kunt doen te vermenigvuldigen.

Als elke proxy 60 reqs/min toestaat, geven 4 proxy's u een capaciteit van 240 reqs/min. 10 proxy's schalen naar 600 verzoeken/min. Proxy's zijn essentieel voor het bouwen van gedistribueerde scrapers met grote volumes in Python.

Nu je begrijpt waarom proxy's nuttig zijn, gaan we dieper in op de details van hoe ze werken...

Hoe proxy's werken: uw verzoeken anonimiseren

Proxy's fungeren als tussenpersonen voor verzoeken tussen u en de bestemmingsserver:

Hoe proxy's werken

In plaats van rechtstreeks vanaf uw IP-adres verbinding te maken met de doelsite, worden uw verzoeken eerst via de proxyserver gerouteerd. Dit maskeert uw echte IP vanaf de bestemming.

Dit werkt door uw HTTP-verzoeken te configureren om het IP-adres van de proxy te gebruiken in plaats van uw eigen adres. We zullen later precies bespreken hoe je dit in Python kunt configureren.

Enkele belangrijke opmerkingen over de werking van proxy's:

  • De proxy heeft zijn eigen unieke IP-adres waar het verkeer vandaan lijkt te komen. Dit verbergt uw echte IP-adres en vervangt het door dat van de proxy.

  • Proxy's kunnen aan elkaar worden gekoppeld voor extra anonimiteit. U kunt verkeer via meerdere proxy's leiden om de oorsprong verder te verdoezelen.

  • Proxyprotocollen zoals HTTP en SOCKS passerend verkeer afhandelen. Dit wordt geconfigureerd op de applicatielaag voor verzoeken.

Nu u begrijpt hoe proxy's op een fundamenteel niveau werken, gaan we de verschillende soorten proxy's bekijken die beschikbaar zijn.

HTTP versus SOCKS volmachten

De twee belangrijkste proxyprotocollen zijn HTTP en SOCKS. Laten we ze vergelijken:

HTTP-proxy's

HTTP-proxy's zijn het meest voorkomende type dat u tegenkomt. Enkele belangrijke kenmerken:

  • Werkt alleen voor HTTP/HTTPS-verkeer (niet lager niveau TCP/UDP)
  • Eenvoudig te installeren – compatibel met de meeste bibliotheken en tools
  • Meestal gebruikt voor webscrapen en algemene webtoegang

HTTP-proxy's onderscheppen in essentie HTTP-verzoeken van de client en sturen deze door naar de bestemming. Ze zijn beperkt tot alleen HTTP-verkeer.

SOCKS volmachten

SOCKS is een vollediger proxyprotocol dat op lagere netwerklagen werkt.

Enkele kenmerken:

  • Werkt voor elk TCP-verkeer, inclusief HTTP, HTTPS, FTP enz.
  • Authenticatie- en beveiligingsfuncties toegevoegd zoals gebruikersnaam/wachtwoord auth.
  • Meestal gebruikt voor volledige netwerktoegang en anonimiteit.

Terwijl HTTP-proxy’s alleen op applicatieniveau werken, SOCKS bevindt zich lager op de netwerk-/transportlaag. Dit maakt het mogelijk SOCKS om vrijwel al het TCP-verkeer te proxyen.

Welke moet u gebruiken?

Voor de meeste gevallen van webschrapen is een HTTP-proxy prima. Het is eenvoudiger in te stellen en u hoeft uw HTTP-verzoeken alleen maar via proxy's te sturen.

Als u volledige netwerktoegangsroutering nodig heeft voor verkeer op een lager niveau dan HTTP, gebruikt u SOCKS gebruiken. SOCKS is ook beter als u prioriteit geeft aan extra beveiliging en authenticatie nodig heeft.

Voor ons gebruik dat zich richt op Python-webschrapers, zijn HTTP-proxy's perfect geschikt. Laten we nu eens kijken waar we proxyservers kunnen verkrijgen.

Waar u proxy's kunt krijgen voor webscrapen

Er zijn een paar hoofdmethoden voor het verkrijgen van proxy's voor gebruik met Python-verzoeken:

1. Koop proxy's bij een proxyprovider

De eenvoudigste manier is om proxy's aan te schaffen bij een proxyservice. Enkele topaanbieders zijn onder meer:

  • HelderData – Mijn favoriete provider in het algemeen met residentiële IP's van hoge kwaliteit wereldwijd. Snelle verbindingen en betrouwbare uptime.

  • oxylabs – Datacenterproxy's beschikbaar voor alle regio's om grote volumes te ondersteunen. Betaalbare prijzen.

  • GeoSurf – Gespecialiseerd in residentiële proxy's voor specifieke landen om toegang te krijgen tot geografisch beperkte inhoud.

Verwacht maandelijks ongeveer $ 1- $ 5 per proxy te betalen, afhankelijk van de kwaliteit van de provider en de locaties. Met proxyservice-API's kunt u eenvoudig lijsten met nieuwe proxy's laden die u in uw code kunt integreren.

2. Zoek openbaar beschikbare proxy's

U kunt ook gratis openbare proxy's online vinden. Houd er rekening mee dat deze van lagere kwaliteit zijn omdat ze worden gedeeld. Openbare proxy's worden veel gebruikt en gaan vaak offline.

Handige plaatsen om openbare proxy's te vinden:

Ik raad niet aan om uitsluitend op openbare proxy's te vertrouwen, maar ze kunnen in een mum van tijd de betaalde proxy's aanvullen. Verwacht lagere uptime/snelheden.

3. Implementeer uw eigen proxy's

U kunt ook uw eigen privéproxy's maken door proxyservers in te zetten op infrastructuur zoals residentiële geroteerde IP's, cloudinstanties of VPN's.

Dit geeft u controle, maar vereist meer inspanning om proxyservers te configureren en te onderhouden. Voor de eenvoud besteedt u doorgaans de proxy-inrichting uit aan een provider.

Samenvattend raad ik aan om proxy's aan te schaffen bij een gerenommeerde provider als BrightData, tenzij het budget ernstig beperkt is. De betrouwbaarheid en kwaliteit wegen zwaarder dan het omgaan met lastige openbare proxy's.

Laten we vervolgens in de code duiken om te zien hoe Python-verzoeken kunnen worden geconfigureerd met behulp van proxy's...

Een proxy instellen – Voorbeelden van Python-verzoeken

Python-verzoeken maken het eenvoudig om uw verkeer via proxyservers te leiden.

U geeft proxy's op door een proxies dict dat URL-schema's toewijst aan proxy-URL's:

proxies = {
  ‘http‘: ‘http://10.10.1.10:3128‘,
  ‘https‘: ‘http://10.10.1.10:1080‘ 
}

Geef vervolgens dit proxy-dictaat door bij het indienen van verzoeken:

response = requests.get(‘https://example.com‘, proxies=proxies)

Hierdoor worden alle HTTP- en HTTPS-verzoeken via de opgegeven proxy's geleid.

U kunt ook proxy's globaal instellen voor alle verzoeken of per verzoek. Laten we voorbeelden bekijken van verschillende proxyconfiguraties met Python-verzoeken.

Globale proxy voor alle verzoeken

Om een ​​proxy globaal toe te passen op alle verzoeken die via de verzoekensessie worden gedaan, stelt u het proxydictaat in op sessieniveau:

import requests

session = requests.Session() 

proxies = {
  ‘http‘: ‘http://10.10.1.10:3128‘,
  ‘https‘: ‘http://10.10.1.10:1080‘  
}

session.proxies = proxies

response = session.get(‘https://example.com‘) 
# Uses HTTP proxy http://10.10.1.10:3128

U kunt dit ook doen door de omgevingsvariabelen in te stellen HTTP_PROXY en HTTPS_PROXY voordat u uw script uitvoert.

Volmacht per verzoek

Om een ​​proxy alleen voor een specifiek verzoek te gebruiken, geeft u het proxydictaat alleen voor die oproep als parameter door:

import requests 

response = requests.get(‘https://example.com‘) # no proxy

proxied_response = requests.get(‘https://example.com‘, proxies={
  ‘http‘: ‘http://10.10.1.10:3128‘,
  ‘https‘: ‘http://10.10.1.10:1080‘ 
}) # uses proxy

Dit heeft voorrang op de globale proxy, alleen voor dit ene verzoek.

Proxy voor specifiek domein

Als u alleen verkeer voor bepaalde domeinen wilt proxyen, geeft u het domein op in uw proxydictaat:

proxies = {
   ‘http://scrape-site.com‘: ‘http://10.10.1.10:3128‘,
   ‘https://api.example.com‘: ‘http://10.10.1.10:1080‘, 
}

requests.get(‘http://scrape-site.com/‘, proxies=proxies) # uses proxy
requests.get(‘http://no-proxy-domain.com‘, proxies=proxies) # no proxy

Dit maakt gedetailleerde controle mogelijk over welke sites proxy's gebruiken en niet.

Nu u weet hoe u proxy's moet toepassen, gaan we bespreken hoe u zich kunt authenticeren met proxy's...

Authenticatie met proxy's

Voor veel proxy's is authenticatie vereist om ze te kunnen gebruiken. Dit houdt in dat u gebruikersnaam/wachtwoordgegevens in uw proxy-URL's doorgeeft.

Hier is een voorbeeld van een HTTP-proxy-URL met authenticatie:

http://myusername:[email protected]:8080

Eenvoudig genoeg, maar er is een extra overweging als uw gebruikersnaam of wachtwoord speciale tekens bevat.

Veel speciale karakters zoals @ en : zijn ongeldig in de basis-URL-syntaxis. Om deze gevallen af ​​te handelen, moeten we dat doen URL-codering de inloggegevens met de urllib bibliotheek:

from urllib.parse import quote

username = ‘[email protected]‘
password = ‘pass#123‘

proxy_url = f‘http://{quote(username)}:{quote(password)}@123.45.6.7:8080‘

Hierdoor worden deze waarden correct gecodeerd, zodat ze in de URL kunnen worden doorgegeven.

Nu kunnen uw inloggegevens speciale tekens bevatten en kunt u zich succesvol authenticeren.

Laten we, nu dat in het kwadraat is, verder gaan met het bespreken van roterende proxy's...

Roterende proxy's om verboden te voorkomen

Wanneer u websites scrapt, wilt u uw verzoeken over meerdere proxy-IP's roteren. Dit voorkomt dat u door sites wordt verbannen omdat u te veel verzoeken vanaf één IP-adres indient.

Hier is één manier om proxyrotatie in Python te implementeren:

import requests 
from random import choice

proxy_list = [
  ‘http://123.45.6.7:8080‘,
  ‘http://98.76.54.3.2:8080‘,
  ‘http://103.47.99.2:8080‘  
]

for _ in range(10):

  proxy = choice(proxy_list)

  response = requests.get(‘https://example.com‘, proxies={
      ‘http‘: proxy,
      ‘https‘: proxy
  })

  # Do something with response...

We houden een lijst bij met proxy-URL's. Vóór elk verzoek kiezen we willekeurig een proxy met behulp van Python random.choice(). Hierdoor worden bij elk verzoek proxy's gerouleerd.

U kunt uw lijst met proxy's laden vanuit een bestand, proxy-API, database of andere bron. Vernieuw het regelmatig om nieuwe proxy's in te voeren als de oude kapot gaan.

Gebruik idealiter minstens 10+ proxy's en wijzig deze voor de zekerheid minstens elke 100 verzoeken. Hoe meer hoe beter.

Zorg ervoor dat u een soortgelijke proxy-rotatie in uw productieschrapers implementeert om onder de radar te blijven.

Laatste gedachten over proxy's met Python-verzoeken

En daar heb je het – een uitgebreide handleiding voor het gebruik van proxy's met de verzoekenmodule van Python!

We hebben het belang van proxy's voor Python-webschrapers besproken, hoe ze onder de motorkap werken, waar je proxy's kunt verkrijgen, hoe je verzoeken kunt configureren om proxy's te gebruiken, authenticatie en proxy-rotatiepatronen.

Proxy's zijn cruciaal voor het succesvol op grote schaal schrapen van sites en het vermijden van IP-verboden. Met de hier beschreven technieken kunt u proxy's als een professional inzetten!

Voor nog geavanceerder proxygebruik raadpleegt u de vraagt ​​documentatie aan. Ga nu aan de slag en gebruik uw nieuwe proxy-krachten voorgoed! Laat het me weten als u nog andere proxyvragen heeft.

Doe mee aan het gesprek

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *