جديد! |استدعاء API واحد وبيانات نظيفة. بلا حاجة لأدوات استخراج.← احصل على 10,000 توكن مجاني

Selenium Python (3). كيفية تجاوز كشف Selenium باستخدام Python: وكلاء المستخدم والتنفيذ في الخلفية

تعرف على كيفية تجاوز كشف التصفح الآلي باستخدام Python ووكلاء المستخدم والتنفيذ في الخلفية. حسّن مهارات web scraping والأتمتة لديك.

نُشر3 يونيو 2024
مدة القراءة3 دقيقة
الكاتبBrandon Perry

أصبح web scraping وأتمتة المتصفح ضروريين للعديد من الشركات والمطورين. ومع ذلك، تكتشف العديد من المواقع الآن التصفح الآلي وتحظره. ستستكشف هذه المقالة كيفية تجاوز كشف Selenium باستخدام Python من خلال معالجة وكلاء المستخدم وتشغيل Selenium في الخلفية. سنتعمق في خطوات وأدوات وأفضل ممارسات مفصلة لضمان نجاح web scraping.

فهم الكشف عن السيلينيوم#

قبل أن نتجاوز الكشف، دعنا نفهم كيفية عمله. يمكن للمواقع الإلكترونية الكشف عن Selenium من خلال التحقق من وجود علامات وخصائص معينة لمشغل الويب. عندما يحدد الموقع هذه العلامات، يمكنه حجب الوصول أو تقديم بيانات مضللة. على سبيل المثال، عندما تفتح موقعًا باستخدام متصفح Chrome عادي، يستجيب كما هو متوقع. ومع ذلك، عندما تفتح نفس الموقع باستخدام Selenium، يمكن للموقع الكشف عن الأتمتة وحجبها. يحدث هذا الكشف لأن Selenium يعيّن علامات محددة يمكن للمواقع البحث عنها.

تغيير علامات WebDriver#

لتجاوز كشف Selenium، تتمثل إحدى الطرق الفعالة في تعديل علامات WebDriver.

  1. إعدادات Firefox: افتح صفحة إعدادات Firefox بكتابة about:config في شريط العناوين. ابحث عن العلامة المتعلقة بـ WebDriver وعيّنها إلى false.
  2. تنفيذ الكود:
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)

هذا السكريبت يعطّل علامة كشف WebDriver، مما يجعل المتصفح يبدو كمثيل يقوده مستخدم عادي.

وكلاء المستخدم#

وكيل المستخدم هو سلسلة نصية يرسلها المتصفح إلى خادم الويب لتعريف نفسه. قد يؤدي تغيير سلسلة وكيل المستخدم إلى جعل طلبات Selenium لا تختلف عن طلبات المتصفح العادية.

خطوات تغيير وكيل المستخدم:

  1. تحديد سلسلة وكيل مستخدم شائعة: مثال: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
  2. تطبيق التغيير في 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)

من خلال تعيين وكيل مستخدم مخصص، يمكننا تجاوز العديد من عمليات الاكتشاف الأساسية.

تشغيل Selenium في الخلفية#

تشغيل المتصفح في الخلفية هو جانب حاسم آخر من جوانب تجنب الكشف. يمكن تحقيق ذلك بتشغيل المتصفح في وضع headless.

التنفيذ:

from selenium import webdriver

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

driver = webdriver.Chrome(options=options)

التشغيل في وضع مقطوعة الرأس يعني عدم عرض أي واجهة رسومية، وهو أمر ضروري لتشغيل المهام التلقائية على الخوادم.

تعطيل إشعارات المتصفح والأصوات#

غالباً ما ينطوي التصفح الآلي على التعامل مع النوافذ المنبثقة والإخطارات غير المتوقعة. يمكن أن يؤدي تعطيلها إلى تبسيط العملية.

مثال على الكود:

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)

يعطّل هذا البرنامج النصي الإخطارات ويكتم الصوت، مما يضمن أتمتة بدون انقطاع.

مثال على تحليل البيانات#

دعنا نأخذ مثالاً عملياً على تحليل أسماء المستخدمين من موقع ينشئ أسماء مستخدمين عشوائية.

خطوات:

  1. تحميل الموقع والتفاعل مع العناصر:
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)

الخلاصة#

من خلال معالجة إشارات WebDriver، وتغيير وكلاء المستخدم، وتشغيل السيلينيوم في الخلفية، وتعطيل إشعارات المتصفح، يمكنك تجاوز اكتشاف السيلينيوم بشكل فعال. تعتبر هذه التقنيات ضرورية لتقطيع الويب والأتمتة بشكل سلس وغير مكتشف. يضمن تنفيذ هذه الأساليب أن تظل مهامك الآلية فعالة دون انقطاع. تذكر دائمًا استخدام عمليات تجريف الويب والأتمتة بشكل أخلاقي، مع احترام شروط خدمة موقع الويب وقوانين خصوصية البيانات. لمزيد من التقنيات المتقدمة والتحديثات المنتظمة، تابع مدونتنا على FineProxy.org. لا تتردد في مشاركة أفكارك وملاحظاتك في التعليقات أدناه. إذا أعجبك هذا المقال، فلا تنسى الاشتراك في قناتنا وترك إعجاب. تجريف سعيد!

من خلال تنفيذ هذه الخطوات وتعديل الإعدادات حسب الحاجة، يمكنك التأكد من أن مشاريع الأتمتة الخاصة بك تعمل بسلاسة ودون أن يتم اكتشافها.