NEW! |Jedno wywołanie API, a w odpowiedzi czyste dane. Bez własnych scraperów.Odbierz 10 000 darmowych tokenów →

Selen Pythona (3). Jak ominąć wykrywanie Selenium za pomocą Pythona: programy użytkownika i wykonywanie w tle

Dowiedz się, jak ominąć automatyczne wykrywanie przeglądania przy użyciu języka Python, programów użytkownika i wykonywania w tle. Zwiększ swoje umiejętności w zakresie skrobania i automatyzacji sieci.

Opublikowano3 czerwca 2024
Czas czytania3 min

Skrobanie sieci i automatyzacja przeglądarek stały się integralną częścią wielu firm i programistów. Jednak wiele witryn internetowych wykrywa i blokuje obecnie automatyczne przeglądanie. W tym artykule dowiesz się, jak ominąć wykrywanie Selenium za pomocą Pythona, manipulując agentami użytkownika i uruchamiając Selenium w tle. Zagłębimy się w szczegółowe kroki, narzędzia i najlepsze praktyki, aby zapewnić skuteczne skrobanie sieci.

Zrozumienie wykrywania selenu#

Zanim ominiemy wykrywanie, przyjrzyjmy się, jak to działa. Strony internetowe mogą wykryć Selenium, sprawdzając obecność określonych flag i właściwości sterowników internetowych. Gdy witryna zidentyfikuje te flagi, może zablokować dostęp lub przedstawić wprowadzające w błąd dane. Na przykład, gdy otwierasz witrynę za pomocą standardowej przeglądarki Chrome, reaguje ona zgodnie z oczekiwaniami. Jeśli jednak otworzysz tę samą witrynę za pomocą Selenium, witryna może wykryć automatyzację i ją zablokować. To wykrywanie ma miejsce, ponieważ Selenium ustawia określone flagi, których mogą szukać strony internetowe.

Zmiana flag WebDriver#

Aby obejść detekcję Selenium, jedną z efektywnych metod jest modyfikacja flag WebDriver.

  1. Konfiguracja Firefoksa: Otwórz stronę konfiguracji Firefoksa, wpisując about:config w pasku adresu. Znajdź flagę związaną z WebDriver i ustaw ją na false.
  2. Implementacja kodu:
from selenium import webdriver

# Set Firefox preferences
options = webdriver.FirefoxOptions()
options.set_preference("dom.webdriver.enabled", False)
options.set_preference('useAutomationExtension', False)

driver = webdriver.Firefox(options=options)

Ten skrypt wyłącza flagę wykrywania WebDriver, dzięki czemu przeglądarka wygląda jak zwykła instancja sterowana przez użytkownika.

User Agents#

Klient użytkownika to ciąg znaków wysyłany przez przeglądarkę do serwera WWW w celu identyfikacji. Zmiana ciągu agenta użytkownika może sprawić, że żądania Selenium będą nie do odróżnienia od zwykłych żądań przeglądarki.

Kroki, aby zmienić agenta użytkownika:

  1. Zidentyfikuj typowy ciąg agenta użytkownika: Przykład: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
  2. Wprowadź zmianę w Selenium:
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)

Ustawiając niestandardowego klienta użytkownika, możemy ominąć wiele podstawowych wykryć.

Uruchamianie Selenium w tle#

Uruchamianie przeglądarki w tle to kolejny kluczowy aspekt pozwalający uniknąć wykrycia. Można to osiągnąć, uruchamiając przeglądarkę w trybie bezgłowym.

Implementacja:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")

driver = webdriver.Chrome(options=options)

Praca w trybie bezgłowym oznacza, że nie jest wyświetlany interfejs graficzny, co jest niezbędne do uruchamiania zautomatyzowanych zadań na serwerach.

Wyłączanie powiadomień i dźwięków przeglądarki#

Automatyczne przeglądanie często wiąże się z obsługą nieoczekiwanych wyskakujących okienek i powiadomień. Wyłączenie ich może usprawnić proces.

Przykład kodu:

from selenium import webdriver

options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
options.add_experimental_option("prefs", prefs)
options.add_argument("--mute-audio")

driver = webdriver.Chrome(options=options)

Skrypt ten wyłącza powiadomienia i wycisza dźwięk, zapewniając nieprzerwaną automatyzację.

Przykład analizowania danych#

Rozważmy praktyczny przykład analizowania pseudonimów z witryny generującej losowe nazwy użytkowników.

Kroki:

  1. Załaduj witrynę i wchodź w interakcję z elementami:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

# Locate the username field and extract nicknames
usernames = []
for _ in range(10):
    nickname = driver.find_element(By.ID, "nickname").text
    usernames.append(nickname)
    driver.find_element(By.ID, "generate").click()
print(usernames)

Podsumowanie#

Manipulując flagami WebDriver, zmieniając programy użytkownika, uruchamiając Selenium w tle i wyłączając powiadomienia przeglądarki, możesz skutecznie ominąć wykrywanie Selenium. Techniki te są niezbędne do płynnego i niewykrytego przeglądania sieci i automatyzacji. Wdrożenie tych metod gwarantuje, że zautomatyzowane zadania pozostaną nieprzerwane i wydajne. Pamiętaj, aby zawsze korzystać ze skrobania i automatyzacji sieci w sposób etyczny, przestrzegając warunków korzystania z witryny internetowej i przepisów dotyczących prywatności danych. Aby poznać bardziej zaawansowane techniki i regularne aktualizacje, zaglądaj na nasz blog na FineProxy.org. Podziel się swoimi pomysłami i opiniami w komentarzach poniżej. Jeśli spodobał Ci się ten artykuł, nie zapomnij zasubskrybować naszego kanału i zostawić lajka. Miłego skrobania!

Wykonując te kroki i dostosowując ustawienia w razie potrzeby, możesz mieć pewność, że Twoje projekty automatyzacji będą działać sprawnie i niezauważenie.