python, web scraping

Czym jest user agent? Wykorzystanie w web scrapingu

user aget. Wykorzystanie w web scrapingu

Protokół HTTP to aktualnie podstawa większości aplikacji. Korzystasz z niego codziennie, nie tylko programując, lecz także (a może nawet przede wszystkim) wchodząc na strony internetowe i korzystając z aplikacji mobilnych. Nagłówek User-agent jest używany podczas każdej interakcji w ramach protokołu.

Mam nadzieję, że wystarczająco przekonałem Cię do zgłębienia tematyki prokołu HTTP. Dzisiaj opowiem Ci trochę o user-agentach, czyli „podpisie”, którego często nieświadomie używamy korzystając z internetu.

Nic, co robimy w internecie, nie jest w pełni anonimowe. Nawet korzystając z protokołu HTTP na stronach internetowych niewymagających logowania, pozostawiamy całkiem wyraźny ślad naszej aktywności. 

Czy zastanawiałeś się kiedyś, jak wejście na stronę wygląda z punktu widzenia administratora?

Analizując powyższy fragment logów (serwera nginx), możemy zobaczyć, że nasza aktywność zostawia ślad w postaci m.in. adresu IP, dokładnego czasu wejścia, użytego protokołu, kodu odpowiedzi, adresu pobieranego zasobu. Oprócz tego widoczny jest jeszcze string nazywany **User-agentem**: “Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)”

User-agent to jeden z nagłówków protokołu HTTP wykorzystywanego w każdym żądaniu. Wskazuje on na typ urządzenia, z jakiego został wykonany request. Dzięki niemu można sprawdzić, z jakiego systemu operacyjnego korzystał użytkownik oraz jakiej użył przeglądarki.

Wykorzystanie nagłówka user-agent w Web Scrapingu

Dlaczego powinniśmy myśleć o user-agentach, jeżeli chodzi o web scraping?

Sprawdźmy jak wygląda zwykły request w Pythonie wykonany bez zmian żadnych nagłówków.

Zwróć szczególną uwagę na nagłówek User-agent. Jeżeli chcemy zabezpieczyć naszą stronę przed próbami scrapowania danych bez problemu możemy usunąć requesty posiadające tego typu wartość nagłówka mając pewność, że są to boty. 

Nagłówek możemy jednak bez problemu podmienić:

Zastosowanie takiego nagłówka utrudni rozróżnienie ruchu botów od zwykłych użytkowników (jednak nadal jest to możliwe w stosunkowo prosty sposób, o czym dowiesz się w jednym z następnych maili).

Skąd pobrać user-agenta?

Możesz znaleźć go w narzędziach deweloperskich swojej przeglądarki. W Chrome wystarczy uruchomić narzędzia deweloperskie (ctrl + shift + I), następnie przejść do zakładki Network i odświeżyć stronę.

nagłówki http i user agent
Przykładowy widok nagłówków HTTP w narzędziach deweloperskich chrome

Innym sposobem jest skorzystanie z bazy gotowych user-agentów zdefiniowanych dla różnych przeglądarek. 

W Pythonie możesz do tego celu użyć biblioteki user_agent.

Używanie różnych user-agentów reprezentujących realne i często używane przeglądarki znacząco zmniejsza szanse na otrzymanie bana podczas web scrapingu. Warto również rotować wartościami nagłówków przy jednoczesnej rotacji proxy.

Jeżeli chcesz dowiedzieć się więcej o scrapingu koniecznie przeczytaj inne wpisy z kategorii Web scraping:

Tagged , , , ,

About Kamil Kwapisz

Od lat zajmuję się web scrapingiem i tworzeniem aplikacji w Pythonie.
View all posts by Kamil Kwapisz →

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *