دورزدن محافظت های ضد Web Scraping

Web scraping یا web harvesting عملیاتی است که برای استخراج داده ها از وب سایت ها انجام می شود. برخی از سایت­ ها از خود در برابر «وب اسکرپینگ» محافظت می ­کنند. البته برخی اوقات، استخراج اطلاعات از آنها معقول و عادلانه (و همچنین بر اساس رأی اخیر دادگاه ایالات متحده) و قانونی است. در این مقاله، به پرکاربرد­ترین روش­ های محافظتی web scraping و همچنین روش­ های دور زدن آنها می­ پردازیم.

چهار راهکار اصلی محافظتی در مقابل اسکرپینگ عبارتند از:

1) شناسایی IP

2) استفاده از روش های rate limiting برای IP

3) شناسایی مرورگر

4) پیگیری و tracking رفتار کاربر

 

شناسایی IP

برخی سایت­ ها اجازه­ ی دسترسی به محتوای خود را بر اساس موقعیت مکانی آدرس IP شما نمی­ دهند و آنها را تنها به کاربرهای کشورهای معین نشان می­ دهند.

در حالتی دیگر، بعضی سایت­ ها دسترسی شما را بر اساس محدوده­ ی IP (Range) که آدرس شما به آن تعلق دارد مسدود می­ کنند. این نوع حفاظت، معمولاً برای کاهش میزان ترافیک غیرانسانی به کار می­ رود. برای مثال، بعضی از سایت­ ها اجازه­ ی دسترسی به رنج IP های خدماتی سایت آمازون و سایر range های شناخته شده را که مطمئن هستند ترافیک انسانی ندارند، نمی ­دهند.

این نوع حفاظت را معمولاً می­ توان به راحتی با استفاده از سرورهای Proxy دور زد.

استفاده از روش های rate limiting برای IP

دومین روش پرکاربرد محافظتی، محدود کردن دسترسی بر اساس تعداد درخواست­هایی است که در یک بازه­ ی زمانی مشخص، توسط یک آدرس IP ارسال شده است. این نوع محافظت می­ تواند به صورت دستی (به این معنا که یک انسان در حال چک کردن رفتار باشد و در صورت مشاهده ­ی حجم زیادی از ترافیک داده­ای ارسالی از یک آدرس IP، آن را مسدود خواهد کرد) و یا کاملاً اتوماتیک باشد.

برای مثال، در سایت Google.com در حالت عادی می­ توانید روزانه تنها حدود 300 درخواست را ثبت کنید و اگر به این سقف برسید، به جای نتیجه­ ی جستجوی خود، با یک صفحه­ ی CAPTCHA رو به رو خواهید شد. به عنوان مثالی دیگر، می­ توان به سایتی اشاره کرد که در هر دقیقه اجازه­ ی ثبت تنها ده درخواست را می­دهد و در صورت ثبت درخواستی جدید، خطا می ­دهد.

محافظ هایی مانند این ممکن است موقت باشند ولی برخی اوقات نیز می­ توانند دائمی باشند، مخصوصا اگر یک انسان به صورت دستی آنها را تحت کنترل داشته باشد.

برای رد کردن این محدودیت دو راه وجود دارد. یک راه، محدود کردن حداکثر درخواست­ های همزمان و یا حتی در صورت امکان، به وجود آوردن وقفه­ هایی برای کندسازی فرآیند پردازش می ­باشد. راه دیگر استفاده از سرورهای Proxy و عوض کردن آدرس­ IPها پس از تعداد مشخصی از درخواست­ هاست.

شناسایی مرورگر

یکی از روش­های محافظتی نسبتاً شناخته شده­ ی دیگر مرورگری است که از آن استفاده می­ کنید.

User Agent

برخی سایت­ ها از قابلیت تشخیص HTTP header های  User Agent برای قطع دسترسی دستگاه­ های مشخص استفاده می­ کنند. برای از بین بردن این محدودیت می­ توانید User Agent خود را عوض کنید. اما باید مراقب باشید، چرا که بسیاری از لیست های User Agent ها دارای مولفه های قدیمی هستند که دیگر وجود خارجی ندارد که می ­تواند وضعیت را برای شما بدتر کند.

نشانه­ گذاری کردن مرورگر

روش دیگر که برخی اوقات در آنتی اسکرپینگ استفاده می­ شود، ساختن یک نشانی منحصر به­ فرد یا fingerprint برای مرورگر و اتصال آن به آدرس IP با استفاده از کوکی ها است. در نتیجه اگر آدرس IP تغییر کند ولی کوکی مذکور همراه با نشانی قبلی باقی بماند، سایت درخواست را رد می ­کند.

در این روش، سایت­ ها همچنین قادر به ردیابی و مسدود کردن نشانی­ هایی که به صورت عمده از طریق راه­ حل­ های اسکرپیگ به کار گرفته می­شوند، هستند. مانند کرومیوم  که در حالت headless اجرا شود و اندازه صفحه پیش فرض باشد.

بهترین روش مقابله با این گونه تکنیک های محافظتی، حذف کوکی­ ها و تغییر متغیرهای مرورگر در هر پردازش و نهایتاً تبدیل کرمیوم به کروم اصلی می­باشد.

 

پیگیری و tracking رفتار کاربر

آخرین گزینه­ ی حفاظتی که بعضا توسط روش­های پیشرفته­ ی آنتی اسکرپینگ به کار گرفته می­ شود، پیگیری رفتار کاربر به منظور تشخیص رفتاری است که توسط یک انسان انجام نشده؛ مانند کلیک کردن روی یک لینک بدون حرکت دادن اشاره­ گر موس! این نوع حفاظ به طور معمول همراه با نشانه­ گذاری مرورگر و rate limiting داده­ای IP توسط روش­ های پیشرفته­ ی آنتی اسکرپینگ به کار گرفته می­ شود.

دور زدن این روش به راحتی و تنها با یک کد ساده امکان­پذیر نمی ­باشد. ولی می­ توان گفت که الگوهایی وجود دارند که با پیدا کردن آنها می­توانیم این حفاظ را دور بزنیم. برای درک بهتر موضوع چند نمونه به شرح زیر می باشد:

 

1- سایت را بررسی و ببینید، آیا در حال ذخیره­ ی داده­ هایی درباره­ ی مرورگر شما است یا خیر

شما می­ توانید این کار را با باز کردن صفحه­ ی Chrome DevTools در مرورگر کروم خود و رفتن به قسمت شبکه (Network) انجام دهید. سپس به HXR یا Img tab تغییر حالت دهید. چرا که بعضا سایت­ ها درخواست­ های ردیابی و tracking را در قالب load کردن عکس های صفحه وب پنهان می­ کنند. بررسی کنید که در هنگام باز کردن صفحه یا اقدام به انجام کاری در آن صفحه، درخواست Post ای وجود دارد یا خیر. اگر درخواستی را یافتید که داده­ های رمزگذاری شده­ ی عجیبی در آن وجود دارد، به هدف خود رسیده ­اید. شکل زیر نمونه ­ایست که رخداد مذکور را نمایش می­دهد.

اگر درخواستی مانند شکل بالا دریافت کردید، می­ توانید آن را در سایتی مثل base64decode.org یا سایت های مشابه بررسی کنید. اگر مشمول داده­ هایی درباره­ ی مرورگر شما بود، درخواستی که برای ردیابی استفاده می شود را پیدا کرده اید.

 

2- مسدود کردن درخواست های ردیابی

در مرحله­ ی بعدی باید درخواست های tracking را غیرفعال کنید. برای این کار می­ بایستی ابتدا همه­ ی درخواست­ ها را لیست کنید و سپس ستون Initiator را به این منظور بررسی کنید. این ستون معمولا شامل یک فایل JavaScript است که همه چیز از آن منشأ می­ گیرد.