ProxynetProxynet

تله‌های هانی‌پات چیست و چه اثری بر اسکرپینگ دارد؟

تاریخ انتشار:

14 دقیقه مطالعه

Acar Diveroli
نویسنده: Acar Diveroli
سکویی از کارت‌های پیوند با تله‌ای کندومانند در میانه و کابل خط‌چینی که از یک ربات به آن می‌رسد

در HTML یک فروشگاه اینترنتی پیوندی هست که هرگز در صفحه دیده نمی‌شود: با display: none پنهان شده، متنی ندارد و به /product/special-offer-7781 اشاره می‌کند. هیچ انسانی که صفحه را در مرورگر می‌بیند این پیوند را نمی‌بیند و روی آن نمی‌زند. اما اسکرپری که همه تگ‌های <a href> صفحه را جمع می‌کند و به نوبت بازدید می‌کند، آن را می‌یابد و باز می‌کند. در همان لحظه سایت با اطمینان می‌داند این بازدید از انسان نیامده است. این پیوند یک تله هانی‌پات است.

در این نوشته توضیح می‌دهیم اصطلاح هانی‌پات در امنیت و در وب اسکرپینگ چه معنایی دارد، تله‌های پیوند پنهان و فرم چگونه کار می‌کنند، بر سر اسکرپری که در آن‌ها بیفتد چه می‌آید و چرا اسکرپرها در آن‌ها می‌افتند. چارچوب از ابتدا روشن است: هدف «دور زدن» هانی‌پات نیست، بلکه دنبال نکردن مسیرهایی است که سایت نمی‌خواهد بازدید شوند. خزنده‌ای که قواعد را رعایت کند و دامنه‌اش را محدود نگه دارد از قبل از این تله‌ها دور است؛ چگونگی آن را با نمونه‌ای در Playwright نشان می‌دهیم.

هانی‌پات چیست؟

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

هانی‌پات در وب اسکرپینگ همین فکر را در مقیاس یک صفحه وب به کار می‌برد:

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

هانی‌پات یکی از روش‌های دفاعی در برابر حمله‌های خودکاری مانند اسکرپینگ، ساخت حساب و هرزنامه است که OWASP در پروژه Automated Threats to Web Applications دسته‌بندی کرده است. قدرت این دفاع‌ها در ارزان بودنشان است: یک سطر HTML تشخیص ربات با اطمینان بالا می‌دهد.

تله‌های پیوند پنهان چگونه کار می‌کنند؟

تله پیوند پنهان در چهار گام کار می‌کند:

  1. سایت پیوندی در صفحه می‌گذارد و آن را از بازدیدکنندگان انسانی پنهان می‌کند.
  2. آدرس پیوند در هیچ جای دیگری به کار نمی‌رود. معمولاً در robots.txt هم بسته شده تا ربات‌های موتور جست‌وجویی که قواعد را رعایت می‌کنند هم به آنجا نروند.
  3. اسکرپری که همه پیوندهای صفحه را جمع می‌کند این آدرس را به فهرستش می‌افزاید و بازدید می‌کند.
  4. سایت درخواست به این آدرس را ثبت می‌کند و آدرس IP، نشست یا اثر انگشت مرورگری را که آن را فرستاده ربات علامت می‌زند.

روش‌های رایج پنهان کردن پیوند:

  • display: none: عنصر هیچ جایی در صفحه نمی‌گیرد.
  • visibility: hidden: عنصر جا می‌گیرد اما دیده نمی‌شود.
  • اندازه صفر: پهنا و ارتفاع صفر، بدون متن.
  • opacity: 0: کاملاً شفاف.
  • جای‌گیری بیرون از صفحه: position: absolute; left: -9999px.
  • هم‌رنگ با پس‌زمینه: متن سفید روی پس‌زمینه سفید.
  • پنهان پشت عنصری دیگر: پیوندی که با z-index پوشانده شده است.

چون برخی از این روش‌ها ممکن است بر بازدیدکنندگانی که صفحه‌خوان به کار می‌برند هم اثر بگذارند، سایت‌های دقیق ویژگی‌هایی مانند aria-hidden="true" و tabindex="-1" را به پیوندهای تله می‌افزایند تا کاربران صفحه‌کلید و فناوری‌های کمکی هم به آن‌ها نرسند.

هانی‌پات در فرم‌ها

هانی‌پات فرم رایج‌ترین روش در برابر ربات‌های هرزنامه است. فیلدی که انسان نمی‌تواند ببیند به فرم تماس، نظر یا ثبت‌نام افزوده می‌شود:

html
<form action="/contact" method="post">
  <input type="text" name="name">
  <input type="email" name="email">
  <!-- Humans don't see this field; if it arrives filled in, the submission is rejected -->
  <input type="text" name="website" class="hidden" tabindex="-1" autocomplete="off">
  <button type="submit">Send</button>
</form>

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

برخی فرم‌ها بررسی زمانی هم می‌افزایند: ارسال‌هایی که چند ثانیه پس از باز شدن صفحه فرم می‌رسند مشکوک دانسته می‌شوند، با این فرض که انسان نمی‌تواند در آن مدت فرم را بخواند و پر کند.

برای اسکرپینگ نتیجه روشن است: اسکرپری که داده جمع می‌کند معمولاً دلیلی برای پر کردن فرم ندارد. اسکریپتی که فرم‌ها را خودکار ارسال کند دقیقاً مانند ربات هرزنامه رفتار می‌کند.

صفحه‌های تله و هزارتوها

هانی‌پات همیشه یک پیوند نیست. برخی دفاع‌ها هم ربات را تشخیص می‌دهند و هم با کشاندن آن به صفحه‌های بی‌پایان منابعش را هدر می‌دهند:

  • مسیرهایی که صفحه بی‌پایان می‌سازند: صفحه‌های تقویم، فیلتر یا جست‌وجو که در هر بازدید پیوندهای تازه تولید می‌کنند. حتی اگر تله عمدی نباشند، خزنده بدون سقف عمق را به حلقه بی‌پایان می‌فرستند.
  • هزارتوهای محتوای تولیدشده: در قابلیت AI Labyrinth که Cloudflare در 2025 اعلام کرد، ربات‌هایی که دستورهای منع خزش را نادیده می‌گیرند به صفحه‌های پیوندداری که با هوش مصنوعی تولید شده‌اند فرستاده می‌شوند. بر اساس این اعلام، این صفحه‌ها همچون هانی‌پات نسل تازه هم عمل می‌کنند: هیچ انسانی در هزارتویی از محتوای بی‌معنا چهار پیوند پیش نمی‌رود، پس بازدیدکننده‌ای که تا آنجا برسد به احتمال زیاد ربات است.
  • داده جعلی: رباتی که شناسایی شده به‌جای قیمت‌های واقعی مقدارهای تغییریافته، محصولات ناموجود یا نتایج خالی می‌گیرد. اسکرپر خطایی نمی‌گیرد، اما داده‌ای که جمع می‌کند غیرقابل‌اعتماد می‌شود.

داده جعلی خطرناک‌ترین پیامد است، چون متوجه شدنش دشوار است. ممکن است اسکرپر ماه‌ها کار کند و گزارش‌هایی با قیمت‌های نادرست بسازد.

اگر در هانی‌پات بیفتید چه می‌شود؟

سامانه مدیریت ربات سایت درخواست به آدرس تله را نشانه‌ای قوی می‌داند. آنچه پس از آن رخ می‌دهد از سایتی به سایت دیگر متفاوت است:

  • آدرس IP مسدود می‌شود: همه درخواست‌های همان آدرس 403 می‌گیرند.
  • نشست علامت می‌خورد: کوکی یا توکن نشست ربات برچسب می‌خورد؛ حتی اگر IP عوض شود نشست شناخته می‌شود.
  • اثر انگشت ثبت می‌شود: ویژگی‌های مرورگر یا کلاینت ذخیره می‌شود و همان اثر انگشت از IPهای دیگر هم مشکوک دانسته می‌شود. شیوه ساخته شدن اثر انگشت را در اثر انگشت مرورگر توضیح داده‌ایم.
  • صفحه‌های بررسی: در درخواست‌های بعدی صفحه بررسی نمایش داده می‌شود.
  • داده جعلی یا پاسخ خالی: اسکرپر به کار ادامه می‌دهد اما داده نادرست جمع می‌کند.
  • فهرست‌های شهرت مشترک: سرویس‌های مدیریت ربات ممکن است منبع‌هایی را که در یک سایت شناسایی شده‌اند در سایت‌های مشتریان دیگرشان هم در نظر بگیرند.

برخی از این پیامدها ممکن است نه فقط اسکرپر، بلکه کاربران دیگر همان آدرس IP را هم متأثر کنند. این نکته‌ای است که با آدرس‌های IP مشترک باید در نظر داشت.

چرا اسکرپر شما در آن‌ها می‌افتد؟

هانی‌پات‌ها رفتار مشخصی را هدف می‌گیرند و آن رفتار معمولاً از یک اشتباه طراحی می‌آید:

  • منطق «همه پیوندها را دنبال کن». افزودن همه تگ‌های <a href> صفحه به صف بدون بررسی قابل‌دیدن بودن.
  • خزش بی‌دامنه. وارد شدن به همه مسیرهای سایت در حالی که فقط صفحه‌های محصول لازم است.
  • نخواندن robots.txt. آدرس‌های تله اغلب در robots.txt بسته‌اند؛ خزنده‌ای که از فایل پیروی کند هرگز به آنجا نمی‌رود.
  • دنبال کردن پیوندهای rel="nofollow". پیوندهایی که سایت صراحتاً گفته دنبال نشوند.
  • نبودن سقف عمق و تعداد صفحه. خزنده در مسیرهایی که صفحه بی‌پایان می‌سازند متوقف نمی‌شود.
  • پر کردن خودکار فرم‌ها. نوشتن مقدار در همه فیلدها، حتی فیلدهای پنهان.
  • بازدید پیاپی یک آدرس با پارامترهای گوناگون. هزاران آدرس ساخته‌شده از ترکیب فیلتر و مرتب‌سازی.

خزنده مشروع چگونه از هانی‌پات دور می‌ماند؟

قاعده‌های زیر برای «دور زدن» هانی‌پات نیستند؛ برای این‌اند که مسیرهایی را که سایت نمی‌خواهد دنبال نکنید. طراحی خزنده به این شیوه، دوری از تله‌ها را همچون اثر جانبی به همراه دارد.

  1. از robots.txt پیروی کنید. پیش از خزش فایل سایت را بخوانید و مسیرهای بسته را به صف نیفزایید. شیوه خواندن آن را در فایل robots.txt چیست و چگونه آن را بخوانیم؟ توضیح داده‌ایم.
  2. دامنه را با الگوی URL محدود کنید. اگر فقط داده محصول لازم دارید، فقط آدرس‌هایی را که با /product/ آغاز می‌شوند دنبال کنید.
  3. در صورت امکان به‌جای جمع کردن پیوند از نقشه سایت استفاده کنید. sitemap.xml آدرس‌هایی را فهرست می‌کند که سایت می‌خواهد خزیده شوند.
  4. پیوندهای قابل‌دیدن را دنبال کنید. اگر مرورگر به کار می‌برید، پیوندهایی را که کاربر نمی‌بیند به صف نیفزایید.
  5. از پیوندهای rel="nofollow" بگذرید.
  6. سقف عمق، تعداد صفحه و تکرار بگذارید. گونه‌های پارامتری یک مسیر را یکسان‌سازی کنید.
  7. برای جمع‌آوری داده فرم ارسال نکنید. اگر ارسال فرم واقعاً لازم است (برای نمونه ورود به حساب خودتان)، فقط فیلدهایی را که می‌شناسید پر کنید.
  8. سرعت خود را محدود کنید. تله‌ها بیشتر ربات‌هایی را می‌گیرند که سریع و گسترده می‌خزند.

در خودکارسازی مرورگر، بررسی «پیوند قابل‌دیدن» می‌تواند چنین باشد:

python
from urllib.parse import urljoin, urlsplit

from playwright.sync_api import sync_playwright


def visible_links(page, base, allowed_prefix="/product/"):
    addresses = set()
    for link in page.locator("a[href]").all():
        href = link.get_attribute("href")
        rel = (link.get_attribute("rel") or "").lower()
        if not href or "nofollow" in rel or not link.is_visible():
            continue
        url = urljoin(base, href)
        parts = urlsplit(url)
        if parts.netloc != urlsplit(base).netloc or not parts.path.startswith(allowed_prefix):
            continue
        addresses.add(url)
    return sorted(addresses)


with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://example.com/deals")
    for address in visible_links(page, "https://example.com"):
        print(address)   # also check robots.txt before queuing
    browser.close()

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

باید مرزهای بررسی قابل‌دیدن بودن را بدانید. تابع is_visible() در Playwright عنصرهای دارای display: none، visibility: hidden و اندازه صفر را قابل‌دیدن نمی‌داند. اما عنصرهایی که با روش‌هایی مانند opacity: 0، جای‌گیری بیرون از صفحه یا هم‌رنگی با پس‌زمینه پنهان شده‌اند ممکن است از این بررسی قابل‌دیدن بگذرند. پس بررسی قابل‌دیدن بودن به‌تنها تضمین نیست؛ محافظت واقعی پیروی از robots.txt و محدود کردن خزش به الگوهای URL لازم است. تقریباً همه پیوندهای تله بیرون از این دو قاعده قرار می‌گیرند.

اسکرپری که بدون مرورگر با کلاینت HTTP کار می‌کند نمی‌تواند قابل‌دیدن بودن را مستقیم بسنجد؛ برای آن الگوهای URL، robots.txt و قواعد نقشه سایت اهمیت بیشتری دارند.

انواع هانی‌پات

نوعسازوکارچه کسی را می‌گیرد؟خزنده مشروع چگونه دور می‌ماند؟
پیوند پنهان‌شده با CSSپیوندی که انسان نمی‌بیند و اغلب در robots.txt بسته استربات‌هایی که همه پیوندها را دنبال می‌کنندrobots.txt، الگوی URL، بررسی قابل‌دیدن بودن
فیلد پنهان فرماگر فیلدی که باید خالی بماند پر برسد رد می‌شودربات‌های فرمی که همه فیلدها را پر می‌کنندارسال نکردن فرم هنگام جمع‌آوری داده
بررسی زمانیفرم‌هایی که بیش از حد سریع ارسال شوند مشکوک‌اندربات‌هایی که بی‌درنگ ارسال می‌کنندارسال نکردن فرم
مسیر صفحه‌های بی‌پایانصفحه‌هایی که در هر بازدید پیوند تازه می‌سازندخزنده‌های بدون سقف عمقسقف عمق و صفحه، یکسان‌سازی پارامتر
هزارتوی محتوای تولیدشدهصفحه‌های تولیدشده برای ربات‌هایی که دستور منع خزش را نادیده می‌گیرندربات‌هایی که از robots.txt پیروی نمی‌کنندپیروی از robots.txt
داده جعلیمحتوای تغییریافته برای ربات‌های شناسایی‌شدهIP یا نشست‌های علامت‌خوردهعلامت نخوردن؛ تأیید داده با نمونه‌برداری

کاربردها

  • خزنده در مقیاس بزرگ: کش robots.txt برای هر سایت، فهرست مجاز الگوهای URL، سقف عمق و کشف با اولویت نقشه سایت. بخش مقیاس‌پذیری در صفحه راه‌حل وب کراولر آمده است.
  • خزش برای حفاظت از برند: خزش‌هایی که برای یافتن سایت‌های فروشنده کالای تقلبی انجام می‌شوند، دامنه را به صفحه‌های محصول مربوط محدود نگه می‌دارند؛ رفتار در چارچوب قواعد برای گردآوری مدرک بدون فعال کردن دفاع‌های سایت خزیده‌شده ضروری است. ساختار آن در صفحه راه‌حل حفاظت از برند آمده است.
  • تشخیص ربات در جایگاه صاحب سایت: هانی‌پات فرم در سایت خودتان و پیوند تله‌ای که در robots.txt بسته شده، راه‌های ارزانی برای تشخیص زودهنگام خودکارسازی مخرب‌اند. بخش حفاظت از داده در صفحه راه‌حل امنیت داده آمده است.
  • بررسی کیفیت داده: بررسی دستی و منظم نمونه‌ای از قیمت‌های جمع‌شده در مرورگر نشان می‌دهد داده جعلی ارائه می‌شود یا نه.

اشتباهات رایج

  • دیدن هانی‌پات همچون مانع فنی برای دور زدن. تله نشانه ترجیح آشکار سایت است؛ مشکل واقعی خزش بی‌دامنه است.
  • تکیه فقط بر بررسی قابل‌دیدن بودن. عنصرهای شفاف یا بیرون از صفحه ممکن است از آن بگذرند.
  • خواندن robots.txt فقط یک بار در آغاز. در خزش‌های طولانی فایل ممکن است تغییر کند؛ برای هر سایت در بازه‌هایی آن را تازه کنید.
  • در نظر نگرفتن داده جعلی. خطا نگرفتن به معنای گرفتن داده درست نیست.
  • ارسال فرم «محض احتیاط». جمع‌آوری داده تقریباً هرگز به ارسال فرم نیاز ندارد.
  • آدرس جداگانه دانستن گونه‌های پارامتری. صفحه‌های فیلتری که ترکیب‌های بی‌پایان می‌سازند خزنده را به تله می‌کشانند.

خطاهای دیگر در سرعت، هدر و IP را در وب اسکرپینگ بدون مسدود شدن گرد آورده‌ایم.

راهنمای انتخاب

وضعیت شماپیشنهاد
فقط برخی گونه‌های صفحه لازم استفهرست مجاز الگوهای URL، نقشه سایت
گسترده می‌خزیدrobots.txt، سقف عمق، یکسان‌سازی پارامتر
خودکارسازی مرورگر به کار می‌بریدپیوندهای قابل‌دیدن و بدون nofollow همراه robots.txt
کلاینت HTTP به کار می‌بریدالگوهای URL و robots.txt (قابل‌دیدن بودن سنجش‌پذیر نیست)
باید فرمی پر شودفقط فیلدهای شناخته‌شده؛ برای جمع‌آوری داده فرم ارسال نکنید
به درستی داده شک داریدنمونه‌ای بردارید و دستی در مرورگر تأیید کنید
می‌خواهید از سایت خودتان محافظت کنیدهانی‌پات فرم همراه پیوند تله بسته‌شده در robots.txt

پرسش‌های متداول

آیا استفاده سایت‌ها از هانی‌پات قانونی است؟

معمولاً بله؛ افزودن پیوند یا فیلدی که بازدیدکنندگان نمی‌بینند به صفحه خود سایت یک روش دفاعی است. اما محتوای تله نباید گمراه‌کننده باشد یا دسترس‌پذیری را خراب کند و داده شخصی که در این میان جمع می‌شود تابع قانون‌های مربوط است.

اسکرپر من از کجا بفهمد در هانی‌پات افتاده است؟

مستقیم نمی‌فهمد؛ آدرس تله ممکن است مانند صفحه‌ای عادی پاسخ دهد. نشانه‌ها غیرمستقیم‌اند: پاسخ‌های 403 که کمی بعد آغاز می‌شوند، صفحه‌های بررسی، داده‌ای که ناگهان تغییر می‌کند یا ناسازگار می‌شود. در لاگ‌های خزش به دنبال درخواست‌هایی به آدرس‌های بسته در robots.txt یا آدرس‌هایی که انتظارشان را نداشتید باشید.

آیا عوض کردن IP مسدودسازی پس از هانی‌پات را برمی‌دارد؟

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

چرا ربات‌های موتور جست‌وجو در هانی‌پات نمی‌افتند؟

ربات‌های مشروع موتور جست‌وجو از robots.txt پیروی می‌کنند و به نشانه‌هایی مانند nofollow احترام می‌گذارند. صاحبان سایت معمولاً آدرس‌های تله را در robots.txt می‌بندند، پس این ربات‌ها هرگز به آنجا نمی‌روند. همین منطق برای هر خزنده‌ای که قواعد را رعایت کند صادق است.

تفاوت هانی‌پات و CAPTCHA چیست؟

CAPTCHA صراحتاً از بازدیدکننده تأیید می‌خواهد و کاربران انسانی را هم متأثر می‌کند. هانی‌پات دیده نمی‌شود؛ کاربران انسانی چیزی متوجه نمی‌شوند و فقط کسانی که رفتار خودکار مشخصی دارند در تله می‌افتند.

آیا به سایت خودم هانی‌پات بیفزایم؟

روش فیلد پنهان در فرم‌های تماس و نظر راهی کم‌هزینه برای کاهش هرزنامه است و بر تجربه کاربر اثری ندارد. هنگام افزودن پیوندهای تله پنهان، بستن آدرس تله در robots.txt را فراموش نکنید؛ در غیر این صورت ممکن است ربات‌های موتور جست‌وجویی را که قواعد را رعایت می‌کنند به اشتباه علامت بزنید.

خلاصه

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

پرسش از ChatGPTپرسش از Claude