Python and selenium

CAPTCHA سسٹمز ایسے پیٹرنز پہچاننے کے لیے بنائے جاتے ہیں جو بوٹس کو انسانوں سے الگ کرتے ہیں، مگر انہیں چکما دیا جا سکتا ہے۔ اپنے اسکریپر میں غیر متوقع پن اور انسان جیسی حرکات شامل کرنے سے سسٹم الجھ جاتا ہے اور بلاک ہونے کا امکان کم ہو جاتا ہے۔ Selenium ایک Python لائبریری ہے جو براؤزرز کو کنٹرول کرنے کے لیے آسان API فراہم کرتی ہے۔ عام طور پر Selenium نظر آنے والی براؤزر ونڈو کے ساتھ چلتا ہے، لیکن اسے ہیڈ لیس موڈ میں بھی چلایا جا سکتا ہے۔ کچھ پلگ اِنز آٹومیشن کو چھپانے میں مدد دیتے ہیں، جس سے براؤزر حقیقی صارف جیسا لگتا ہے اور ڈیٹیکشن کا خطرہ کم ہو جاتا ہے۔

اس ٹیوٹوریل میں ہم CAPTCHA کو بائی پاس کرنے کے چند طریقوں کا جائزہ لیں گے، جن میں Undetected ChromeDriver، پراکسی روٹیشن، انسانی رویے کی نقل، اور بیرونی سروسز (CapSolver) شامل ہیں۔ ہم ہر طریقہ دیکھیں گے تاکہ آپ فیصلہ کر سکیں کہ آپ کے لیے کون سا طریقہ زیادہ موزوں ہے۔ 

Undetected ChromeDriver کا استعمال

Undetected ChromeDriver: یہ کیا ہے؟

ڈویلپرز ویب سائٹس کے اینٹی بوٹ میکانزم سے بچنے کے لیے Selenium جیسے ہیڈ لیس براؤزرز استعمال کرتے ہیں۔ Selenium Undetected ChromeDriver، ChromeDriver کا بہتر بنایا گیا ورژن ہے جسے شناخت سے بچنے کے لیے ڈیزائن کیا گیا ہے۔ عام ChromeDriver کے برعکس، جو ایسی معلومات ظاہر کر دیتا ہے جنہیں اینٹی بوٹ سسٹمز بوٹس کی شناخت کے لیے استعمال کرتے ہیں، Undetected ChromeDriver ان لیکس کو کم کرتا ہے۔ اس سے DataDome، Imperva، اور BotProtect.io جیسے سسٹمز کے ذریعے آپ کے بوٹ کے بلاک ہونے کا امکان کم ہو جاتا ہے۔

تیاری:

  • یقینی بنائیں کہ آپ Python 3.6 یا اس سے نیا ورژن استعمال کر رہے ہیں، اور Selenium انسٹال ہے۔
  • Chrome ڈاؤن لوڈ اور انسٹال کریں۔

اہم مراحل:

1. اگر آپ نے ابھی تک Selenium انسٹال نہیں کیا، تو پہلے اسے انسٹال کریں۔


pip3 install selenium
      
        

      

2. آگے بڑھنے کے لیے، undetected-chromedriver ماڈیول کو ٹرمینل میں درج ذیل کمانڈ چلا کر انسٹال کریں:


pip3 install undetected-chromedriver
      
        

      

اگر انسٹالیشن کامیاب ہو جائے تو آپ کو یہ پیغام نظر آئے گا: 

3. اس ٹیوٹوریل میں ہم VS Code ایڈیٹر استعمال کرتے ہیں۔ اگلا مرحلہ Undetected ChromeDriver کے لیے لائبریریز امپورٹ کرنا ہے۔ اس کے بعد وہ ویب پیج منتخب کریں جس سے آپ ڈیٹا اسکریپ کرنا چاہتے ہیں۔ اپنے ہدف ویب پیج کا اسکرین شاٹ بنائیں تاکہ دیکھا جا سکے کہ آیا یہ CAPTCHA کے بغیر درست طور پر لوڈ ہوا ہے۔  درج ذیل کمانڈز چلائیں:


import undetected_chromedriver as uc
import time

# Initialize Chrome with undetected ChromeDriver
browser = uc.Chrome(headless=True, use_subprocess=True)

# Navigate to the target page
browser.get("https://example.com")

# Wait a few seconds to ensure the page loads fully
time.sleep(3)

# Save a screenshot to verify page loading
browser.save_screenshot("screenshot.png")
print("Screenshot taken and saved as 'screenshot.png'")

# Close the browser after the task
browser.quit()
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

آپ نے یہ مرحلہ مکمل کر لیا۔ Undetected ChromeDriver کے ساتھ CAPTCHA اب رکاوٹ نہیں بنتا، اور آپ ویب سائٹ کی اسکریپنگ شروع کر سکتے ہیں۔ یہ طریقہ چھوٹے پروجیکٹس کے لیے اچھا ہے۔ بڑے پیمانے کے اسکریپنگ پروجیکٹس میں یہ اتنا مؤثر نہیں رہتا، کیونکہ یہ آپ کے IP ایڈریس کو بلاک ہونے سے نہیں بچاتا۔ اگلی حکمتِ عملی زیادہ محفوظ متبادل ہے۔ 

پراکسی روٹیشن کا استعمال

ویب سائٹس بوٹ سرگرمی کی نشاندہی کے لیے چھپا ہوا CAPTCHA لگا سکتی ہیں۔ اگر ایک ہی IP ایڈریس سے بہت سی درخواستیں آئیں تو ویب سائٹس اسے بوٹ رویہ سمجھتی ہیں اور رسائی بلاک کر دیتی ہیں۔ بدلتے ہوئے IP ایڈریسز استعمال کرنے سے یہ مسئلہ کم ہو سکتا ہے۔ اس ٹیوٹوریل میں ہم DataImpulse کی رہائشی پراکسیز استعمال کر رہے ہیں۔ اگر آپ انہیں آزمانا چاہتے ہیں تو بس سائن اپ کریں اور اپنا ترجیحی پلان منتخب کریں۔ تمام ضروری معلومات آپ کے ڈیش بورڈ پر دستیاب ہوں گی، اور آپ اپنے پلان میں پراکسی رسائی سیکشن کے تحت اپنی DataImpulse اسناد دیکھ سکتے ہیں۔

اس کے علاوہ، ہماری جامع گائیڈ میں، آپ ہماری کمیونٹی میں شامل ہونے کا طریقہ، صارف دوست ڈیش بورڈ، اور اس میں موجود سیکشنز کا جائزہ دیکھ سکتے ہیں۔ 

آپ کو پراکسیز کا ایک پول بنانا ہوگا، یا آپ ایک ہی پراکسی استعمال کرنے کی کوشش کر سکتے ہیں۔ ایسا کرنے کے لیے پراکسی فہرست کے بجائے بس “your_single_proxy:port” استعمال کریں۔

“your_single_proxy:port” کے لیے اپنا ہوسٹ اور پورٹ متعین کریں۔ 

driver.get(“https://example.com“) میں مطلوبہ ویب سائٹ درج کریں۔ تمام ضروری لائبریریز انسٹال کرنے کے بعد آپ یہ کوڈ آزما سکتے ہیں:


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

# List of DataImpulse proxies 
proxy_list = [ 
    "proxy1:port", 
    "proxy2:port", 
    "proxy3:port", 
    # Add more proxies from your DataImpulse pool 
]

def start_selenium_with_proxy(proxy):
    # Set up Chrome options
    chrome_options = Options()
    chrome_options.add_argument("--headless=new")

    # Add proxy to Chrome options
    chrome_options.add_argument(f'--proxy-server=http://{proxy}')

    # Initialize the Selenium browser with the proxy settings
    driver = webdriver.Chrome(options=chrome_options)
    return driver

# Example scraping function with using rotating proxies
def scrape_website():
    for proxy in proxy_list:
        driver = start_selenium_with_proxy(proxy)
        try:
            # Navigate to the target website
            driver.get("https://httpbin.io/ip")

            print(driver.find_element(By.TAG_NAME, "body").text)
            
        finally:
            driver.quit()

# Run the scraping function
scrape_website() 
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

مفت پراکسیز عموماً کمزور تحفظ دیتی ہیں اور خود ایک خطرہ بھی بن سکتی ہیں۔ سست کنیکشنز، phishing، اور بلاک شدہ IP ایڈریسز ان کے استعمال کے ممکنہ خطرات میں شامل ہیں۔ یہی بات پراکسی روٹیشن کے بنیادی مسئلے تک لے جاتی ہے، یعنی پراکسی فراہم کنندگان کی لاگت۔ اس صورت میں تحقیق کریں اور وہ فراہم کنندہ منتخب کریں جو مطلوبہ فیچرز کے ساتھ زیادہ قابلِ اعتماد اور بجٹ کے موافق لگے۔ 

کوئی نشان چھوڑے بغیر براؤز کریں

پراکسیز کے ساتھ، سائٹس عموماً آپ پر شک نہیں کرتیں، آپ سے CAPTCHA درج کرنے کو نہیں کہتیں، اور نہ ہی آسانی سے آپ کو پابندی کا نشانہ بناتی ہیں۔ DataImpulse پر آپ کو تازہ ترین ڈیٹا، بلاک لسٹ IPs سے پاک رسائی، CAPTCHA ہینڈلنگ، واضح APIs، اور 24/7 پیشہ ورانہ انسانی سپورٹ ملتی ہے۔ ہمارے نرخ مارکیٹ میں سب سے کم نرخ میں شامل ہیں، صرف $1 per GB! ابھی آزمائیں!

انسانی رویے کی نقل کا استعمال

انسانی رویے کی نقل کرنے والے طریقے نافذ کر کے آپ کا ہیڈ لیس براؤزر صارف کے تعاملات کو زیادہ مستند انداز میں دہرا سکتا ہے۔ حقیقی صارف کی حرکات کی نقل کرنے کے چند اہم طریقے یہ ہیں:

  • ماؤس کی حرکتیں – یہ قدرتی خم، مختلف رفتاریں، اور تیزیاں بناتی ہیں، یعنی یہ نقل کرتی ہیں کہ حقیقی صارفین ماؤس کیسے حرکت دیتے ہیں۔
  • بے ترتیب کلکس – کلکس کے وقت اور معمولی مقام کی تبدیلیوں کو بے ترتیب کیا جاتا ہے تاکہ حقیقی صارف کے رویے کی نقل ہو سکے۔ 
  • کی اسٹروکس – ٹائپنگ کو قدرتی رفتار، وقفوں، اور کبھی کبھار غلطیوں کے مطابق ڈھالا جاتا ہے تاکہ انسان جیسی روانی بنے۔

حرکات کے درمیان چھوٹے وقفے شامل کریں تاکہ انسانی رویے کی نقل ہو، ماؤس کے راستے کو بے ترتیب کریں، اور کلک کی جگہوں کو بدلیں۔ آئیے https://www.scrapingcourse.com/ecommerce کے 3 صفحات کو اہداف کے طور پر استعمال کریں۔  کوڈ کی ایک مثال یہ ہے:


import time
import random
import requests

# make a GET request to the given URL and print the status code
def make_request(url):
    response = requests.get(url)
    print(f"Request to {url} returned status code: {response.status_code}")

# list of URLs to request
urls = [
    "https://www.scrapingcourse.com/ecommerce/page/1/",
    "https://www.scrapingcourse.com/ecommerce/page/2/",
    "https://www.scrapingcourse.com/ecommerce/page/3/",
]

# range for random wait time (in seconds)
min_wait = 1
max_wait = 5

# iterate through each URL in the list
for url in urls:
    make_request(url)
    wait_time = random.uniform(min_wait, max_wait)
    print(f"Waiting for {wait_time:.2f} seconds before the next request...")
    time.sleep(wait_time)

print("All requests completed.") 
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

اگر سب کچھ درست ہو تو آپ کو اسی طرح کا جواب نظر آئے گا:

درحقیقت، انسانی رویے کی نقل خودکار اسکرپٹس کو زیادہ حقیقی بناتی ہے۔ تاہم، بے ترتیب اقدامات شامل ہونے کی وجہ سے یہ نقل پیچیدگی بڑھا سکتی ہے اور مجموعی اسکریپنگ رفتار کو سست کر سکتی ہے۔

بیرونی سروسز (CapSolver) کا استعمال

بہت سی اضافی سروسز موجود ہیں جو مختلف اقسام کے CAPTCHA کو حل کرنے میں مدد دیتی ہیں۔ اس ٹیوٹوریل میں ہم نے CapSolver سروس کا ذکر کیا ہے۔ CapSolver مختلف پراکسی اقسام کے ساتھ ضم ہوتا ہے تاکہ صارفین کئی IP ایڈریسز پر CAPTCHA حل کرنے کے عمل کو منظم کر سکیں۔ پراکسیز استعمال کرنے سے درخواستیں یوں دکھائی دیتی ہیں جیسے وہ متعدد آلات اور مقامات سے آ رہی ہوں، جس سے گمنامی بہتر ہوتی ہے اور شناخت کا خطرہ کم ہوتا ہے۔ DataImpulse کو CapSolver کے ساتھ ضم کرنے کے اہم مراحل کے بارے میں مزید جاننے کے لیے آپ ایک مختصر گائیڈ پڑھ سکتے ہیں۔ 

ہمیں ایک API key کی ضرورت ہوگی، جو آپ اپنے CapSolver ڈیش بورڈ پر تلاش کر سکتے ہیں۔ 

ذیل میں Python کی ایک مثال ہے جو دکھاتی ہے کہ CAPTCHA کو ہینڈل کرنے کے لیے CapSolver کی API کیسے استعمال کی جائے۔ کوڈ چلانے سے پہلے، YOUR_API_KEY، XXX، اور site_url کو اصل اقدار سے بدل دیں۔


# pip3 install requests
import requests
import time

# TODO: Set your configuration
api_key = "YOUR_API_KEY"  # Your CapSolver API key
site_key = "XXX"  # The site key for the target CAPTCHA
site_url = ""  # URL of the page with the CAPTCHA

def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV2TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }

    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()
    task_id = result.get("taskId")

    if not task_id:
        print("Failed to create task:", response.text)
        return

    print(f"Task ID received: {task_id} / Fetching result...")

    while True:
        time.sleep(3)  # Delay between checks

        payload = {"clientKey": api_key, "taskId": task_id}
        response = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        result = response.json()
        status = result.get("status")

        if status == "ready":
            return result.get("solution", {}).get('gRecaptchaResponse')

        if status == "failed" or result.get("errorId"):
            print("Solution retrieval failed! Response:", response.text)
            return

token = capsolver()
print(token)
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

بیرونی سروسز کارکردگی، اسکیل ایبلٹی، اور پیچیدہ کاموں میں زیادہ کامیابی کی شرح فراہم کرتی ہیں۔ ایسی سروسز کے ساتھ ڈویلپرز پروجیکٹ کی دوسری ضروریات پر آسانی سے توجہ دے سکتے ہیں۔ ممکنہ نقصانات میں لاگت، تھرڈ پارٹی کی قابلِ اعتماد کارکردگی پر انحصار، اور ڈیٹا پر محدود کنٹرول کی وجہ سے پرائیویسی کے خدشات شامل ہو سکتے ہیں۔

خلاصہ

Python اپنی سادگی اور وسیع لائبریری سپورٹ کی وجہ سے مشہور ہے، جس سے ویب آٹومیشن اور ڈیٹا اسکریپنگ آسان ہو جاتی ہے۔ Selenium اور Playwright جیسی لائبریریز کے ساتھ آپ براؤزر کے کام خودکار کر سکتے ہیں اور درست ٹولز کے ذریعے CAPTCHA کو بائی پاس کر سکتے ہیں۔ بہتر طریقہ یہ ہے کہ اپنے ویب اسکریپر کو پراکسیز کے ساتھ ضم کریں، کیونکہ اس سے پابندیاں بائی پاس کرنے، گمنامی برقرار رکھنے، اور پابندی سے بچنے میں مدد ملتی ہے۔

ہم سے رابطہ کریں تاکہ متعدد اسکریپنگ ٹولز اور ہمارے کسٹم حل کے بارے میں مزید جان سکیں۔

Share article: