PDA

View Full Version : سوال: شناسایی بازدید اتوماتیک و ماشینی از صفحات سایت



mnshahab
چهارشنبه 16 شهریور 1390, 16:56 عصر
با سلام
میخواهم پس از شناسایی IP کاربری که در مدت کوتاهی مثلاً چند دقیقه بیش از 1000 بار صفحات سایت را مشاهده کرده و موجب ایجاد ترافیک بر روی سایت شده. IP مذکور را برای مدتی block نمایم یا به صفحه دیگری هدایت کنم. طبیعتاً این IP نمیتواند انسان باشد و ماشین است.
مشکل من آنجاست که این IP ممکن است مربوط به یک موتور جستجو مانند گوگل باشد که روزانه از صفحات سایت اطلاعات برمیدارد من با block کردن ناخواسته آن به سایت خودم ضربه بزنم.
آیا میتوان IP موتورهای جستجو که با آن در اینترنت مشغول رکورد کردن هستند بدست آورد؟
آیا میتوان تفکیکی بین این ها انجام داد یا به کل روش منطقی دیگری برای جلوگیری از این امر وجود دارد و بنده از آن بی خبرم.
اگر این از نرم افزار هایی باشد که کل یک سایت را میتوانند دانلود کنند، جلوگیری از آن چگونه است؟
با تشکر از راهنمایی دوستان

Javad_Darvish_Amiry
پنج شنبه 17 شهریور 1390, 09:30 صبح
درود. اول این که با IP نمیتونید کاری از پیش ببرید؛ چون موتوری که بخواد با ایجاد ترافیک سایتتون رو بخوابونه، مسلما انقدر مهارت داره که با IP های متفاوتی درخواست بفرسته به سایت. بهترین کار اینه که با SessionID کار کنید که مبتنی بر کوکی هست. هر چند که موتورها میتونن اون رو هم در هر درخواست پاک کنند، اما با ترکیبی از SessionID و کوکی و جاوااسکریپت میتونید اطمینان حاصل کنید که آیا درخواست دهنده ای انسان هست یا نه. حالا اگر نبود، دو وضعیت پیش میاد: 1- موتور جستجو 2- موتوری که میخواد اذیتتون کنه!!! برای فهمیدن این که آیا موتور مورد نظر، موتور جستجو هست یا نه، میتونید از HttpContext.Current.Request.Browser.Crawler استفاده کنید که اگه یکی از موتورهای جستجوی معتبر درخواست جاری رو فرستاده باشه، مقدار true رو بر میگردونه؛ یعنی اگه false بود، مطمئن میشید که موتور مخربی درخواست رو به سایت ارسال کرده. اما مشکل اینجاست که Agent های موتورهای جستجو (و در ضمن مرورگرها) مرتبا در حال تغییر و بروزرسانی هست. شیوه مورد استفاده خود من، استفاده از لیست Agent های بروزرسانی شده است که میتونید تو اینترنت پیدا کنید. اون رو با یه اسمی مثلا Web.Agent.config تو ریشه سایتتون کپی کنید و توی web.config تگ <browserCaps configSource="Web.Agent.config" /> رو تو سکشن <system.web> اضافه کنید. فایل Agent رو که دریافت میکنید، مرتبا باید update کنید تا لیستتون بروز باشه و Agent های جدید رو بشناسه. موفق باشید.

mnshahab
شنبه 19 شهریور 1390, 13:03 عصر
درود. اول این که با IP نمیتونید کاری از پیش ببرید؛ چون موتوری که بخواد با ایجاد ترافیک سایتتون رو بخوابونه، مسلما انقدر مهارت داره که با IP های متفاوتی درخواست بفرسته به سایت. بهترین کار اینه که با SessionID کار کنید که مبتنی بر کوکی هست. هر چند که موتورها میتونن اون رو هم در هر درخواست پاک کنند، اما با ترکیبی از SessionID و کوکی و جاوااسکریپت میتونید اطمینان حاصل کنید که آیا درخواست دهنده ای انسان هست یا نه. حالا اگر نبود، دو وضعیت پیش میاد: 1- موتور جستجو 2- موتوری که میخواد اذیتتون کنه!!! برای فهمیدن این که آیا موتور مورد نظر، موتور جستجو هست یا نه، میتونید از HttpContext.Current.Request.Browser.Crawler استفاده کنید که اگه یکی از موتورهای جستجوی معتبر درخواست جاری رو فرستاده باشه، مقدار true رو بر میگردونه؛ یعنی اگه false بود، مطمئن میشید که موتور مخربی درخواست رو به سایت ارسال کرده. اما مشکل اینجاست که Agent های موتورهای جستجو (و در ضمن مرورگرها) مرتبا در حال تغییر و بروزرسانی هست. شیوه مورد استفاده خود من، استفاده از لیست Agent های بروزرسانی شده است که میتونید تو اینترنت پیدا کنید. اون رو با یه اسمی مثلا Web.Agent.config تو ریشه سایتتون کپی کنید و توی web.config تگ <browserCaps configSource="Web.Agent.config" /> رو تو سکشن <system.web> اضافه کنید. فایل Agent رو که دریافت میکنید، مرتبا باید update کنید تا لیستتون بروز باشه و Agent های جدید رو بشناسه. موفق باشید.

خیلی از راهنماییتون متشکرم. برم انجام بدم و نتیجشو ببینم

moferferi
شنبه 19 شهریور 1390, 20:07 عصر
سلام.
ایا میشه از روشی که توی همین سایتدر قسمت جستجو استفاده شده بکار برد.؟
توی سایت بین هر جستجو میگه باید 60 ثانیه صبر کنید.حالا اگه میدونسیتم از چه روشی استفده میکنن خیل خوب بود

mnshahab
یک شنبه 20 شهریور 1390, 08:48 صبح
درود. اول این که با IP نمیتونید کاری از پیش ببرید؛ چون موتوری که بخواد با ایجاد ترافیک سایتتون رو بخوابونه، مسلما انقدر مهارت داره که با IP های متفاوتی درخواست بفرسته به سایت. بهترین کار اینه که با SessionID کار کنید که مبتنی بر کوکی هست. هر چند که موتورها میتونن اون رو هم در هر درخواست پاک کنند، اما با ترکیبی از SessionID و کوکی و جاوااسکریپت میتونید اطمینان حاصل کنید که آیا درخواست دهنده ای انسان هست یا نه. حالا اگر نبود، دو وضعیت پیش میاد: 1- موتور جستجو 2- موتوری که میخواد اذیتتون کنه!!! برای فهمیدن این که آیا موتور مورد نظر، موتور جستجو هست یا نه، میتونید از HttpContext.Current.Request.Browser.Crawler استفاده کنید که اگه یکی از موتورهای جستجوی معتبر درخواست جاری رو فرستاده باشه، مقدار true رو بر میگردونه؛ یعنی اگه false بود، مطمئن میشید که موتور مخربی درخواست رو به سایت ارسال کرده. اما مشکل اینجاست که Agent های موتورهای جستجو (و در ضمن مرورگرها) مرتبا در حال تغییر و بروزرسانی هست. شیوه مورد استفاده خود من، استفاده از لیست Agent های بروزرسانی شده است که میتونید تو اینترنت پیدا کنید. اون رو با یه اسمی مثلا Web.Agent.config تو ریشه سایتتون کپی کنید و توی web.config تگ <browserCaps configSource="Web.Agent.config" /> رو تو سکشن <system.web> اضافه کنید. فایل Agent رو که دریافت میکنید، مرتبا باید update کنید تا لیستتون بروز باشه و Agent های جدید رو بشناسه. موفق باشید.

یک سوال و یک درخواست داشتم جناب آقای امیری:
1- HttpContext.Current.Request.Browser.Crawler به چه صورتی عمل میکند؟ یعنی خودش از یک لیستی از موتور های جستجو که قبلاً در .net framework قرار داده شده، موتور جستجو را شناسایی میکند یا روش دیگری برای شناسایی موتور جستجو دارد؟
2- میشه لطفاً یک نمونه فایل Web.Agent.config را برایم اینجا قرار دهید و سایتی که معمولاً خودتان لیست آپدیت agent ها را از آن استخراج میکنید معرفی نمایید

با تشکر