1. Wprowadzenie do ograniczeń w web scrappingu
Dziś zajmiemy się bardzo ciekawym tematem — jak omijać ograniczenia w web scrappingu. Każdy programista, który zaczyna interesować się scrappingiem, wcześniej czy później napotyka na ograniczenia i blokady ze strony stron internetowych. Czas dowiedzieć się, jak możemy, jako dobrzy ludzie, unikać pułapek systemów ochrony witryn i kontynuować zbieranie danych, nie wywołując przy tym gniewu serwerów.
Kiedy wysyłasz zapytania do witryn, w zasadzie wkraczasz na ich prywatny teren w celu pobrania danych, które starannie chronią. Ale dlaczego witryny rzucają nam kłody pod nogi? Powody mogą być różne: ochrona praw autorskich, zapewnienie niezawodności i wydajności serwerów, zapobieganie nieautoryzowanemu wykorzystaniu danych. Jeśli zużywasz zbyt dużo zasobów strony lub łamiesz jej zasady, możesz zostać... zbanowany. A nikt nie lubi banów, oprócz, być może, adminów serwerów.
2. Ustawienia user-agent
Co to jest user-agent
?
User-agent to ciąg identyfikacyjny, który twoja przeglądarka wysyła z każdym zapytaniem HTTP. Informuje
serwer, jakiej przeglądarki i systemu operacyjnego używasz. I wiesz co? Tego user-agent
można łatwo podrobić, żeby serwer pomyślał, że wchodzisz z najnowszego iPhone'a, a nie odpalony w
przerwie na kawę skrypt w Pythonie.
Przykłady zmiany user-agent
W bibliotece requests
zmiana user-agent
jest bardzo prosta. Oto mały przykład:
import requests
url = "https://example.com"
# Ustawiamy user-agent jak przeglądarka Chrome
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, jak Gecko) Chrome/85.0.4183.83 Safari/537.36"
}
response = requests.get(url, headers=headers)
print(response.content)
Podrabianie user-agent
jest trochę jak przychodzenie na imprezę firmową w kostiumie pandy. Jakbyś to był
ty, ale wyglądasz inaczej. Serwery, widząc "przeglądarkę" zamiast "skryptu", mogą wpuścić cię na imprezę.
3. Praca z cookies
Co to są cookies?
Cookies to małe kawałki danych, które strony internetowe zapisują w twojej przeglądarce. Mogą zawierać różne informacje, od ustawień strony po identyfikatory sesji, które pozwalają ci pozostać zalogowanym.
Użycie cookies w zapytaniach
Praca z cookies w requests
też jest prosta. Zazwyczaj dostajesz cookies przy pierwszym
zapytaniu do strony, a potem używasz ich w kolejnych:
# Tworzymy sesję, żeby zapamiętać cookies
session = requests.Session()
# Wykonujemy pierwsze zapytanie, przechwytując cookies
session.get(url)
# Używamy tych samych cookies w kolejnych zapytaniach
response = session.get(url)
print(response.content)
Sesje są jak transport publiczny dla cookies. Jeżdżą z tobą od strony do strony, przechowując twoje ustawienia.
4. Metody unikania blokad
Praktyczne porady na zmniejszenie prawdopodobieństwa blokady
Oto kilka trików:
- Opóźnienia między zapytaniami: dodawaj losowe opóźnienia między zapytaniami, żeby twój bot nie wzbudzał podejrzeń.
- Zmiana adresów IP: używaj VPN lub proxy, aby zmieniać adresy IP i unikać blokad według tego kryterium.
- Rotacja
user-agent
: zmieniajuser-agent
przy każdym zapytaniu, żeby wyglądać jak różne przeglądarki.
Przykłady zastosowania opóźnień i zmiany adresów IP
Użyj biblioteki time
do dodawania opóźnień:
import time
import random
for _ in range(10):
response = session.get(url)
# Losowe opóźnienie
time.sleep(random.uniform(1, 3))
Do zmiany adresu IP w requests
możesz użyć proxy:
proxies = {
"http": "http://10.10.10.10:8000",
"https": "https://10.10.10.10:8000",
}
response = requests.get(url, proxies=proxies)
5. Dodatkowe metody omijania
Żeby skrypty nie wyglądały podejrzanie, używaj headers
i cookies
, aby
naśladować prawdziwego użytkownika. Pamiętaj: realizm to twoja tajna broń w walce z banami.
Tym kończymy dzisiejszy wykład. Stosowanie tych technik pomoże ci pozostać "niewidzialnym" na radarze stron internetowych i kontynuować zbieranie cennych danych bez blokad. Pamiętaj, jak każdy superbohater, masz odpowiedzialność — używaj tych technik etycznie i zgodnie z prawem. Uwierz w siebie i niech twój kod będzie elegancki jak taniec kota na klawiaturze!
GO TO FULL VERSION