بررسی فیلتر بودن سایت
امروز براتون یه تابع قرار میدم که بررسی میکنه سایت مورد نظر فیلتر هست یا نه . مثلا تو سیستم های افزایش بازدید چک کنید که سایتی که کاربر درج میکنه فیلتر نباشه . این تابع بر اساس آی پی نوشته شده در صفحه فیلترینگ نوشته شده است . یعنی اگه اون آی پی تغییر کنه تابع کار نمی کنه . البته شما میتوانید آی پی جدید را جایگزین کنید!(منظورم همون عددی هست که در عنوان صفحه فیلترینگ نوشته شده) تابع بصورت زیر می باشد :
function is_filter($Url){ $ch = curl_init(); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $Url); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $a = curl_exec($ch); return strpos($a , '10.10.34.34') ? true : false; }
کافیه آدرس سایت را بطور کامل بهش بدید . اگه سایت فیلتر نبود مقدار false و اگر سایت فیلتر بود مقدار true را بر می گرداند . به مثال های زیر توجه کنید :
var_dump(is_filter('http://snippets.ir')); var_dump(is_filter('http://youtube.com'));
خروجی آن بصورت زیر می باشد :
bool(false) bool(true)
8 thoughts on “بررسی فیلتر بودن سایت”
انگار حواست نیست!
این تابع یه عیب اساسی داره!
اونم اینکه اگه سایت روی سرور ایران نباشه پس فیلترینگ ایران دسترسی را نمی تونه محدود نمی کنه که بفهمه فیلتره یا نه!
سلام
ممنون از دیدگاهت اما!
این تابع در حالت پایه و بدون فندق شکن چک میکنه سایت فیلتره یا نه ، وگرنه با فندق شکن که فیلترینگ معنی نداره مگه نه ؟
مثلا سایت یوتیوب که خارج از ایران میزبانی میشه مگه فیل نیست و صفحه فیلترینگ را نشون نمیده ؟
دوست عزیز متوجه نیستی ها!
اگر کاربر هاست از شرکت های خارجی داشته باشه
مثلاً سرور سایت آلمان هست
حالا وقتی از روی اون سایت شما بخوای با php محتوای یک سایت رو بگیری با ip و شبکه آلمان سرور به سایت وصل میشه و اطلاعات رو میگیره!
خب اونجا که دیگه فیلترینگ ایران وجود نداره!
توی این روش سرور سایت چک کننده فیلتر حتماً باید روی سرور ایران باشه
سلام مجدد
اول تشکر میکنم از این همه پیگیریت
دوم اینکه حرفت کاملا درسته و تقریبا تا حالا بهش فکر نکرده بودم
بله درست می فرمایید این کد فقط روی هاست ایران و لوکال هاست کار میده
ببینم میشه ایده ای پیدا کرد که تابع بی نقص بشه
اگه ایده ای داری ممنون میشم بگی اعمال کنم
سلام
فک کنم اگه ای پی user agent رو تو curl تغییر بدی بشه
تست میکنم اگه شد میام میگم
سلام پروکسی ساکس ۵ ایران تو CURL ست کنژن
باسلام
من یک راه حل پیدا کردم که حتی اگر سروری که این اسکریپت روش اجرا می شود خارج از ایران باشد یا حتی اگر VPN روشن باشد باز هم به درستی و با دقت ۱۰۰ درصد کار می کند
راهکار کلی این است :
آی پی دامنه مورد نظر را از یک dns ایرانی درخواست می کنیم
dns ایرانی در پاسخ درخواست آی پی دامنه ای که فیلتر باشد این آی پی را برمی گرداند: “۱۰.۱۰.۳۴.۳۴”
پس اگر این آی پی دریافت شد دامنه مورد نظر فیلتر است.
مزیت این روش نسبت به روش های دیگر این است که:
اولا بسیار سریع است
دوما در هر کشوری تست شود جواب می دهد
سوما با وجود وصل بودن vpn هم کار خود را به درستی انجام می دهد
(من به زبان php مسلط نیستم و این کد به زبان پایتون می باشد
اما اگر دوستان این کد را به زبان php بازنویسی کنند عالی می شود)
from nslookup import Nslookup
def isFilter(domain):
dns_query = Nslookup(dns_servers=[“91.99.101.12”])
ips_record = dns_query.dns_lookup(domain)
result=ips_record.answer
if result==[‘10.10.34.35’]:
return True
else:
return False
print(isFilter(“bbc.com”))
print(isFilter(“yjc.ir”))
(این آموزش صرفا برای مقاصد قانونی نوشته شد)
سلام
خیلی هم عالی، ممنون از اشتراک گذاری شما.