نوشته شده توسط
Javad_Darvish_Amiry
درود. اول این که با 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 های جدید رو بشناسه. موفق باشید.