بازگشت به وبلاگ

پارسینگ فروم‌ها و تابلوهای اعلانات: چگونه داده‌ها را بدون مسدودیت از طریق پروکسی جمع‌آوری کنیم

راهنمای کامل جمع‌آوری داده‌ها از فروم‌ها و تابلوهای اعلانات: چگونه پروکسی انتخاب کنیم، چرخش را تنظیم کنیم و از مسدود شدن در هنگام پارس کردن آویتو، forum.ru و سایر سایت‌ها جلوگیری کنیم.

📅۱۶ اسفند ۱۴۰۴
```html

جمع‌آوری داده‌ها از فروم‌ها و تابلوهای اعلانات — یک وظیفه حیاتی برای بازاریابان، تحلیلگران بازار و صاحبان کسب‌وکار است. پارس کردن آویتو برای نظارت بر قیمت‌های رقباء، جمع‌آوری تماس‌ها از فروم‌های صنعتی، تحلیل نظرات در پلتفرم‌های تخصصی — همه این وظایف به یک مشکل برمی‌خورند: سایت‌ها به‌طور فعال جمع‌آوری خودکار داده‌ها را مسدود می‌کنند. در این مقاله بررسی خواهیم کرد که چگونه پارس کردن پایدار را از طریق پروکسی تنظیم کنیم و از مسدودیت‌ها جلوگیری کنیم.

چرا فروم‌ها و تابلوهای اعلانات پارس کردن را مسدود می‌کنند

صاحبان پلتفرم‌ها به چند دلیل از داده‌های خود محافظت می‌کنند. اولاً، پارس کردن انبوه بار سنگینی بر روی سرورها ایجاد می‌کند — یک پارسر می‌تواند هزاران درخواست در ساعت تولید کند که معادل بازدید سایت توسط صدها کاربر به‌طور همزمان است. ثانیاً، داده‌های جمع‌آوری شده اغلب توسط رقباء استفاده می‌شوند: قیمت‌ها از آویتو به سیستم‌های نظارت منتقل می‌شوند و تماس‌ها از فروم‌ها به پایگاه‌های فروش سرد می‌روند.

سیستم‌های مدرن حفاظت به تجزیه و تحلیل چندین پارامتر می‌پردازند: فرکانس درخواست‌ها از یک IP، الگوهای رفتار (پارسر صفحات را خیلی سریع و به‌طور متوالی باز می‌کند)، هدرهای مرورگر، وجود JavaScript. به عنوان مثال، آویتو از حفاظت چند لایه استفاده می‌کند: بررسی User-Agent، تجزیه و تحلیل کوکی‌ها، اثر انگشت‌گذاری مرورگر، کپچا در صورت فعالیت مشکوک.

نشانه‌های معمولی که شما را شناسایی می‌کنند:

  • یک IP آدرس — اگر همه درخواست‌ها از یک IP بیایند، این یک مسدودیت فوری است
  • فرکانس بالای درخواست‌ها — یک کاربر عادی نمی‌تواند 10 صفحه در ثانیه باز کند
  • عدم وجود کوکی‌ها و JavaScript — اسکریپت‌های ساده JS را اجرا نمی‌کنند و کوکی‌ها را ذخیره نمی‌کنند
  • User-Agent مشکوک — نسخه‌های قدیمی مرورگرها یا عدم تطابق هدرها
  • گشت و گذار متوالی در صفحات — پارس کردن به‌طور دقیق (صفحه 1، 2، 3...) غیرطبیعی به نظر می‌رسد

کدام پروکسی‌ها برای پارس کردن فروم‌ها مناسب هستند

انتخاب نوع پروکسی به حجم داده‌ها، بودجه و سطح حفاظت سایت هدف بستگی دارد. سه گزینه اصلی و کاربرد آن‌ها برای پارس کردن را بررسی خواهیم کرد.

نوع پروکسی سرعت اعتماد سایت‌ها بهترین برای
پروکسی دیتاسنتر بسیار بالا (100+ مگابیت/ثانیه) پایین (به راحتی شناسایی می‌شوند) فروم‌های کوچک بدون حفاظت، پارس کردن آرشیوها
پروکسی‌های مسکونی متوسط (10-50 مگابیت/ثانیه) بالا (IP‌های واقعی شبکه‌های خانگی) آویتو، فروم‌های بزرگ، سایت‌های با حفاظت
پروکسی‌های موبایل متوسط (5-30 مگابیت/ثانیه) حداکثری (IP‌های اپراتورهای موبایل) پلتفرم‌های با حفاظت سخت، جمع‌آوری تماس‌ها

پروکسی دیتاسنتر — ارزان‌ترین گزینه، مناسب برای وظایف ساده. اگر شما نیاز به پارس کردن یک فروم کوچک یا تابلو اعلانات بدون حفاظت جدی دارید، این کافی است. سرعت اجازه می‌دهد تا ده‌ها هزار صفحه در ساعت پردازش شود. اما آویتو، YouDo، forum.ru و دیگر پلتفرم‌های بزرگ به سرعت این IP‌ها را شناسایی و مسدود می‌کنند.

پروکسی‌های مسکونی — تعادل بهینه قیمت و کیفیت برای اکثر وظایف. این IP‌های واقعی کاربران خانگی هستند که سایت‌ها نمی‌توانند آن‌ها را از بازدیدکنندگان عادی تشخیص دهند. برای پارس کردن آویتو، یاندکس.خدمات، فروم‌های بزرگ این انتخاب استاندارد است. نکته مهم: پروکسی‌های مسکونی معمولاً با پرداخت بر اساس ترافیک فروخته می‌شوند، بنابراین درخواست‌ها را بهینه کنید — تصاویر و اسکریپت‌های اضافی را بارگذاری نکنید.

پروکسی‌های موبایل — حداکثر اطمینان برای موارد پیچیده. IP‌های اپراتورهای موبایل (MTS، بی‌لاین، مگافون) بالاترین سطح اعتماد را دارند، زیرا ممکن است هزاران کاربر واقعی پشت یک IP باشند (تکنولوژی CGNAT). از آن‌ها برای پلتفرم‌های با حفاظت سخت یا زمانی که نیاز به جمع‌آوری داده‌های حیاتی بدون خطر مسدودیت دارید، استفاده کنید.

پارس کردن آویتو: ویژگی‌ها و تنظیمات

آویتو — یکی از محافظت‌شده‌ترین پلتفرم‌ها در رنیت است. سیستم ضد پارس شامل بررسی JavaScript، اثر انگشت‌گذاری مرورگر، تحلیل رفتار، کپچا در صورت کوچک‌ترین شک است. یک اسکریپت ساده با requests کار نخواهد کرد — شما صفحه خالی یا کپچا را در سومین درخواست دریافت خواهید کرد.

چه چیزی برای پارس کردن پایدار آویتو نیاز است:

اجزای ضروری:
1. پروکسی‌های مسکونی یا موبایل با چرخش هر 5-10 دقیقه
2. مرورگر بدون سر (Selenium، Puppeteer، Playwright) برای اجرای JavaScript
3. هدرهای واقعی مرورگر و User-Agent از نسخه فعلی Chrome
4. تأخیر بین درخواست‌ها: 3-7 ثانیه برای هر صفحه
5. حفظ کوکی‌ها بین نشست‌ها

وظیفه معمولی — نظارت بر قیمت‌های رقباء. شما باید هر روز آگهی‌ها را در دسته‌بندی خود جمع‌آوری کرده و تغییرات را پیگیری کنید. برای دسته‌بندی با 500-1000 آگهی به حدود 50-100 درخواست نیاز خواهید داشت (با در نظر گرفتن صفحه‌بندی و کارت‌های محصولات). با تنظیمات صحیح، این کار 10-15 دقیقه و 1-2 گیگابایت ترافیک پروکسی‌های مسکونی خواهد گرفت.

تنظیم گام به گام پارسر برای آویتو:

  1. پروکسی دریافت کنید — یک مجموعه از IP‌های مسکونی با چرخش سفارش دهید. برای نظارت روزانه بر یک دسته‌بندی، 10-20 گیگابایت ترافیک در ماه کافی است.
  2. مرورگر بدون سر را تنظیم کنید — از Selenium یا Puppeteer استفاده کنید. مهم است: حالت بدون سر را فعال کنید، اما پارامترهایی برای دور زدن شناسایی اضافه کنید (window.navigator.webdriver = false).
  3. پروکسی را در مرورگر تنظیم کنید — داده‌های پروکسی را هنگام راه‌اندازی مرورگر منتقل کنید. برای Selenium این پارامترها --proxy-server است، برای Puppeteer — args در puppeteer.launch().
  4. رفتار واقعی را اضافه کنید — تأخیرهای تصادفی 3-7 ثانیه، اسکرول صفحه قبل از جمع‌آوری داده‌ها، حرکت ماوس (برای Selenium).
  5. کوکی‌ها را ذخیره کنید — پس از اولین بازدید، کوکی‌ها را ذخیره کرده و در نشست‌های بعدی از آن‌ها استفاده کنید. این باعث کاهش مشکوک بودن می‌شود.
  6. IP را به‌طور منظم تغییر دهید — چرخش هر 5-10 دقیقه یا هر 20-30 درخواست. از یک IP برای کل پارس کردن استفاده نکنید.

خطای بحرانی مبتدیان — پارس کردن خیلی سریع. حتی با پروکسی، اگر صفحات را هر ثانیه باز کنید، سیستم ربات را بر اساس الگوی رفتار شناسایی می‌کند. یک کاربر عادی 10-30 ثانیه به یک آگهی نگاه می‌کند، به پایین اسکرول می‌کند، به جستجو برمی‌گردد. پارسر شما باید این را تقلید کند: تأخیرها، اسکرول، گاهی اوقات به دسته‌های همسایه بروید.

جمع‌آوری داده‌ها از فروم‌ها: استراتژی‌ها و ابزارها

فروم‌ها از نظر سطح حفاظت متفاوت هستند. فروم‌های قدیمی بر روی phpBB یا vBulletin معمولاً حفاظت ضد ربات جدی ندارند — پروکسی دیتاسنتر و یک پارسر ساده کافی است. پلتفرم‌های مدرن (forum.ru، فروم‌های صنعتی تخصصی) از Cloudflare یا سیستم‌های حفاظت اختصاصی خود استفاده می‌کنند.

وظایف معمولی پارس کردن فروم‌ها:

  • جمع‌آوری تماس‌ها — ایمیل، تلفن‌ها، تلگرام از امضاها و پیام‌های کاربران
  • نظارت بر ذکر برند — پیگیری نظرات درباره شرکت شما یا رقباء
  • تحلیل احساسات — جمع‌آوری نظرات درباره محصولات، خدمات، روندها در صنعت
  • جستجوی لیدها — افرادی که به دنبال راه‌حل برای مشکل شما هستند (به عنوان مثال، در فروم‌های ساختمانی به دنبال پیمانکاران می‌گردند)

برای فروم‌های کوچک (تا 10,000 صفحه) ابزارهای آماده مناسب هستند: Octoparse، ParseHub، WebHarvy. آن‌ها دارای رابط بصری هستند — شما فقط بر روی عناصر مورد نیاز کلیک می‌کنید و ابزار پارسر را ایجاد می‌کند. در تنظیمات پروکسی، تأخیرها را مشخص کرده و جمع‌آوری را راه‌اندازی می‌کنید.

برای پروژه‌های بزرگ (صدها هزار صفحه) به یک پارسر سفارشی نیاز است. فریم‌ورک‌های محبوب: Scrapy (Python)، Puppeteer (JavaScript)، Playwright (پشتیبانی از تمام زبان‌ها). آن‌ها اجازه می‌دهند تا منطق گشت و گذار، پردازش خطاها، پارس کردن توزیع شده از طریق مجموعه پروکسی به‌طور انعطاف‌پذیر تنظیم شود.

مثال استراتژی برای پارس کردن فروم صنعتی:

وظیفه: جمع‌آوری تماس‌های متخصصان از فروم ساختمانی (50,000 کاربر، 500,000 پیام).

1. از پروکسی‌های مسکونی با مجموعه 50-100 IP استفاده کنید
2. لیست کاربران (50,000 پروفایل) را با سرعت 500 پروفایل در ساعت پارس کنید (تأخیر 7 ثانیه)
3. IP را هر 100 پروفایل تغییر دهید (هر 12 دقیقه)
4. از پروفایل‌ها ایمیل، سایت، امضا با تماس‌ها را استخراج کنید
5. زمان کل: 100 ساعت (4 روز کار مداوم)
6. ترافیک: حدود 20-30 گیگابایت پروکسی‌های مسکونی

نکته مهم: بسیاری از فروم‌ها برای مشاهده تماس‌ها یا بخش‌های مخفی نیاز به ثبت‌نام دارند. چند حساب کاربری را از قبل ایجاد کنید (به‌صورت دستی، با IP‌های مختلف)، آن‌ها را 1-2 هفته نگه دارید و چند پیام ارسال کنید. از این حساب‌ها برای پارس کردن استفاده کنید — یک کاربر مجاز مشکوکیت کمتری ایجاد می‌کند.

چرخش IP و مدیریت نشست‌ها

چرخش صحیح IP — کلید پارس کردن پایدار در بلندمدت است. دو رویکرد اصلی وجود دارد: چرخش بر اساس زمان و چرخش بر اساس تعداد درخواست‌ها.

چرخش بر اساس زمان: IP را هر N دقیقه تغییر می‌دهید. برای وظایفی که پیش‌بینی‌پذیری مهم است مناسب است. به عنوان مثال، هر 5 دقیقه آویتو را پارس کنید و IP را تغییر دهید — این‌گونه به‌طور قطع از حد مجاز درخواست‌ها از یک آدرس فراتر نمی‌روید. معایب: اگر پارسر سقوط کند یا کند شود، IP را بیهوده از دست می‌دهید.

چرخش بر اساس درخواست‌ها: IP را هر N درخواست تغییر می‌دهید (به عنوان مثال، هر 20-50 صفحه). مصرف پروکسی مؤثرتر است، اما نیاز به شمارش دقیق دارد. اگر سایت 100 درخواست از IP در ساعت محدود کند، چرخش را بر روی 80 درخواست تنظیم کنید — برای خطاها ذخیره‌ای باقی می‌گذارید.

پلتفرم چرخش پیشنهادی تأخیر بین درخواست‌ها
آویتو هر 5-10 دقیقه یا 20-30 درخواست 3-7 ثانیه
YouDo، Profi.ru هر 10-15 دقیقه یا 40-50 درخواست 4-8 ثانیه
فروم‌ها با Cloudflare هر 15-20 دقیقه یا 60-80 درخواست 5-10 ثانیه
فروم‌های ساده (phpBB، vBulletin) هر 30-60 دقیقه یا 200-300 درخواست 2-5 ثانیه

مدیریت نشست‌ها: وقتی IP را تغییر می‌دهید، تصمیم بگیرید که آیا نشست را ریست کنید (کوکی‌ها، localStorage) یا حفظ کنید. برای پارس کردن مجاز (فروم‌ها، حساب‌های کاربری شخصی) نشست را حفظ کنید، اما IP را کمتر تغییر دهید — در غیر این صورت سایت مشکوک می‌شود که حساب هک شده است (ورودها از شهرهای مختلف). برای داده‌های عمومی (آویتو بدون مجوز) همه چیز را هنگام تغییر IP ریست کنید — هر IP به عنوان یک کاربر جدید به نظر می‌رسد.

تکنیک پیشرفته — نشست‌های چسبنده (sticky sessions). برخی از ارائه‌دهندگان پروکسی اجازه می‌دهند IP را برای 10-30 دقیقه "چسبانده" کنید. شما یک IP دریافت می‌کنید، تمام درخواست‌ها را در چارچوب یک وظیفه منطقی (به عنوان مثال، پارس کردن یک دسته‌بندی آویتو) انجام می‌دهید، سپس برای دسته‌بندی بعدی به IP جدید تغییر می‌دهید. این طبیعی‌تر از تغییر IP در وسط مشاهده است.

تنظیم پارسرهای محبوب برای پروکسی

تنظیم پروکسی در ابزارهای محبوب برای پارس کردن را بررسی خواهیم کرد. مثال‌ها برای متخصصان فنی که پارسرهای خود را می‌نویسند.

Scrapy (Python): middleware برای چرخش پروکسی را اضافه کنید. یک لیست پروکسی در settings.py ایجاد کنید و از middleware RandomProxy برای چرخش خودکار در هر درخواست استفاده کنید.

# settings.py
ROTATING_PROXY_LIST = [
    'http://user:pass@proxy1.example.com:8000',
    'http://user:pass@proxy2.example.com:8000',
    'http://user:pass@proxy3.example.com:8000',
]

DOWNLOADER_MIDDLEWARES = {
    'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
    'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}

Puppeteer (JavaScript): پروکسی را هنگام راه‌اندازی مرورگر منتقل کنید. برای چرخش، یک مجموعه پروکسی ایجاد کنید و در هر بار راه‌اندازی جدید مرورگر یک پروکسی تصادفی انتخاب کنید.

const puppeteer = require('puppeteer');

const proxyList = [
  'proxy1.example.com:8000',
  'proxy2.example.com:8000'
];

const proxy = proxyList[Math.floor(Math.random() * proxyList.length)];

const browser = await puppeteer.launch({
  args: [
    `--proxy-server=${proxy}`,
    '--no-sandbox'
  ]
});

// احراز هویت پروکسی
const page = await browser.newPage();
await page.authenticate({
  username: 'user',
  password: 'pass'
});

Selenium (Python): پروکسی را از طریق گزینه‌های Chrome تنظیم کنید. برای احراز هویت HTTP از افزونه یا انتقال credentials در URL استفاده کنید.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://user:pass@proxy.example.com:8000')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-blink-features=AutomationControlled')

driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.avito.ru/moskva/kvartiry')

پارسرهای آماده (Octoparse، ParseHub): در تنظیمات وظیفه، بخش "Proxy" یا "IP Rotation" را پیدا کنید. لیست پروکسی را به فرمت host:port:user:pass اضافه کنید یا URL API برای چرخش را مشخص کنید. گزینه "Rotate on each request" یا "Rotate every N minutes" را فعال کنید.

تکنیک‌های دور زدن حفاظت ضد ربات

پروکسی‌ها مشکل مسدودیت بر اساس IP را حل می‌کنند، اما سیستم‌های مدرن حفاظت ده‌ها پارامتر دیگر را تجزیه و تحلیل می‌کنند. در اینجا مجموعه‌ای از اقدامات برای دور زدن سیستم‌های ضد ربات آورده شده است.

1. User-Agent و هدرهای واقعی: از نسخه‌های به‌روز مرورگرها استفاده کنید. User-Agent را از Chrome 90 قرار ندهید اگر اکنون Chrome 120 منتشر شده است. تطابق هدرها را بررسی کنید: اگر User-Agent می‌گوید "Windows"، اما هدر sec-ch-ua-platform می‌گوید "Linux" — شما شناسایی می‌شوید.

# مجموعه خوبی از هدرها برای سال 2024
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    'Accept-Encoding': 'gzip, deflate, br',
    'DNT': '1',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1'
}

2. دور زدن شناسایی مرورگرهای بدون سر: Selenium و Puppeteer به‌طور پیش‌فرض نشانه‌های خودکارسازی دارند (ویژگی navigator.webdriver = true). از افزونه‌های stealth یا پچ‌ها برای پنهان کردن این نشانه‌ها استفاده کنید.

// افزونه Stealth برای Puppeteer
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

const browser = await puppeteer.launch({headless: true});

3. اثر انگشت‌گذاری JavaScript: سایت‌ها اثر انگشت مرورگر را جمع‌آوری می‌کنند (اثر انگشت canvas، WebGL، فونت‌ها، وضوح صفحه). برای دور زدن از تصادفی‌سازی این پارامترها یا پروفایل‌های واقعی مرورگر استفاده کنید. ابزارها: FingerprintJS Randomizer، Multilogin (پلتفرم با پروفایل‌های آماده).

4. پردازش کپچا: اگر کپچا هنوز ظاهر شد، از خدمات شناسایی استفاده کنید: 2Captcha، Anti-Captcha، CapMonster. آن‌ها 1-3 دلار برای 1000 کپچا هزینه دارند. ادغام از طریق API 10-15 دقیقه طول می‌کشد. برای reCAPTCHA v2/v3 کتابخانه‌های آماده وجود دارد.

5. الگوهای رفتاری: تصادفی بودن را به اقدامات اضافه کنید. صفحات را به‌طور دقیق هر 5 ثانیه باز نکنید — از 3 تا 8 ثانیه متغیر کنید. گاهی اوقات برای 30-60 ثانیه توقف کنید، به تقلید از خواندن یک صفحه طولانی. در فروم‌ها گاهی به پروفایل‌های کاربران بروید و فقط به جمع‌آوری موضوعات نپردازید.

مهم: هرچه حفاظت سایت پیچیده‌تر باشد، پارسر باید کندتر کار کند. برای آویتو بهینه است که 500-1000 صفحه در ساعت از یک جریان جمع‌آوری شود. اگر به بیشتر نیاز دارید — چند پارسر موازی با مجموعه‌های مختلف پروکسی راه‌اندازی کنید، اما هر یک باید به آرامی و به‌طور طبیعی کار کند.

نتیجه‌گیری

پارس کردن فروم‌ها و تابلوهای اعلانات — وظیفه‌ای است که نیاز به رویکرد جامع دارد. پروکسی‌ها مشکل مسدودیت بر اساس IP را حل می‌کنند، اما برای کارکرد پایدار نیاز به هدرهای صحیح، رفتار واقعی، دور زدن اثر انگشت‌گذاری و چرخش هوشمند دارند. انتخاب نوع پروکسی به سطح حفاظت سایت هدف بستگی دارد: برای فروم‌های ساده پروکسی دیتاسنتر کافی است، برای آویتو و پلتفرم‌های بزرگ به پروکسی‌های مسکونی یا موبایل نیاز است.

اصول کلیدی پارس کردن موفق: به آرامی و به‌طور طبیعی، چرخش منظم IP، استفاده از مرورگرهای بدون سر برای سایت‌های پیچیده، پردازش کپچا در صورت نیاز. به سرعت نروید — بهتر است 500 صفحه در ساعت به‌طور پایدار جمع‌آوری کنید تا اینکه 5000 صفحه در ساعت جمع‌آوری کنید و پس از دو روز مسدود شوید.

اگر قصد دارید آویتو، YouDo، فروم‌های بزرگ یا پلتفرم‌های با حفاظت جدی را پارس کنید، توصیه می‌کنیم از پروکسی‌های مسکونی استفاده کنید — آن‌ها تعادل بهینه‌ای از اطمینان و هزینه را فراهم می‌کنند. برای پلتفرم‌های به‌ویژه محافظت‌شده یا جمع‌آوری داده‌های حیاتی، پروکسی‌های موبایل با حداکثر سطح اعتماد مناسب هستند.

```