PDA

View Full Version : تشخیص سایت فیلتر شده



nasimsaba
چهارشنبه 21 اسفند 1392, 09:25 صبح
سلام دوستان
من میخوام توی برنامم تشخیص بدم که یک سایت فیلتر هست یا نه.چطوری میتونم اینو بفهمم؟

mehrdad1991h
چهارشنبه 21 اسفند 1392, 09:28 صبح
خیلی راحت از ادرسی که بهش ریدایرکت میشه میتونی بفهمی دیگه !

nasimsaba
چهارشنبه 21 اسفند 1392, 09:36 صبح
یعنی چطوری؟میشه کامل تر توضیح بدین؟

mehrdad1991h
چهارشنبه 21 اسفند 1392, 09:58 صبح
یعنی چطوری؟میشه کامل تر توضیح بدین؟

از وب برازر استفاده میکنی برای باز کردن سایت ؟
اینجوری میشه
URL= webBrowser1.Url.ToString();
البته بعد از این که کامل صفحه را خوند میتونی از این استفاده کنی وگرنه خطا میده احتمالا یعنی این را توی اونت DocumentCompleted بگذار

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
string URL = webBrowser1.Url.ToString();
}


اگر بلد نیستی اونت چجوری هست این را هم ببین
مثلا اینجا میخوای این صفحه را لود کنی
یعنی اینجوری دیگه وب برازر را هم با کد ایجاد کردیم نیمدیم اصلا از کنترل های تولبار استفاده کنیم و ویزیبل نیست اینجوری الان


private void button1_Click(object sender, EventArgs e)
{
WebBrowser webBrowser1 = new WebBrowser();
webBrowser1.DocumentCompleted+=webBrowser1_Documen tCompleted;
webBrowser1.Navigate(new Uri("Http://www.google.com"));
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
string URL = webBrowser1.Url.ToString();
}



ولی اگر از تولبار اضافه میکنی دیگه خودت داری میبینی تعو پروپرتی ها در قسمت اونت هاش همون گزینه ها را داره تا روشون کلیک کنی خودشون ایجاد میشن دیگه کد نویسی نداره
کافیه ؟

nasimsaba
چهارشنبه 21 اسفند 1392, 12:27 عصر
ممنون از شما.البته من تو برنامم از وب بروزر استفاده نمیکنم.میخوام یک تابع داشته باشم که تشخیص بده یک سایت فیلتر هست یا نه.اول از پینگ استفاده کردم دیدم که خوب جواب نمیده

mehrdad1991h
چهارشنبه 21 اسفند 1392, 15:39 عصر
ممنون از شما.البته من تو برنامم از وب بروزر استفاده نمیکنم.میخوام یک تابع داشته باشم که تشخیص بده یک سایت فیلتر هست یا نه.اول از پینگ استفاده کردم دیدم که خوب جواب نمیده


private bool Is_Filter(string URL)
{
if (!URL.StartsWith("http://", StringComparison.OrdinalIgnoreCase))
{
URL = "Http://" + URL;
}
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(URL));
request.Method = "POST";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//اینجا تنها مشکلی که هست اینه که سایت پیوندها برای فیلتر از
//ifarame
//استفاده کرده لذا احتمال این هست که ادرس همون ادرس اصلی سایت برگرده مگر این که با وب بروزر چک کنی
//و یه اسلیپ ترید هم بهش بدی که 30 ثانیه هم بیاد صبر کنه ببینه
//به صفحه پیوندها ریدایرکت میشه یا نه که اصولی نیست به نظرم
//string result = response.ResponseUri.ToString();
//return (result);
//برای همین میریم از محتواش چک میکنیم مثل زیر :
StreamReader reader = new StreamReader(response.GetResponseStream());
string txt = reader.ReadToEnd().ToString();
bool filter = false;
if (txt.IndexOf("<iframe src=\"http://10.10.34.34?type=Invalid", StringComparison.OrdinalIgnoreCase) != -1 ||
txt.IndexOf("<title>پیوندها</title>", StringComparison.OrdinalIgnoreCase) != -1 ||
txt.IndexOf("<span style=\" line-height: 27px;font-family:tahoma;font-weight:bold;font-size:14px;color:#fff\">دسترسۍ به تارنمای فراخوانده شده امكان پذیر نمۍ باشد.", StringComparison.OrdinalIgnoreCase) != -1
)
{
filter = true;
}
return (filter);
}



نحوه استفاده :


string site = "http://www.google.com";
bool filter = Is_Filter(site);
if (filter)
{
MessageBox.Show("سایت" + "\r\n" + site + "\r\n" + "فیلتر می باشد");
}
else
{
MessageBox.Show("سایت" + "\r\n" + site + "\r\n" + "فیلتر نیست");
}

nasimsaba
پنج شنبه 22 اسفند 1392, 09:39 صبح
ممنون mehrdad1991h (http://barnamenevis.org/member.php?211255-mehrdad1991h) عزیز.به نظرم این منطقی تر بیاد.میرم چکش کنم

amiryaser
شنبه 28 تیر 1393, 18:44 عصر
سلام من هر کار می کنم این خطا رو داره 121289

amiryaser
شنبه 28 تیر 1393, 18:45 عصر
نمی شه کدی نوشت که آدرس بعدی بدون فیلتر و واسمون بیاره من هنوز از کد قبلی نتیجه نگرفتم میشه کمکم کنید خیلی بهش احتیاج دارم

us1234
شنبه 28 تیر 1393, 21:33 عصر
این کد ها که دوستان کلی زحمت کشیدند و به شما داده اند سی شارپ است !
شما چرا در پی اچ پی دیزاینر کدها را کپی کرده اید !!! :متعجب:

اصلا اینجا بخش C# است :افسرده:

amiryaser
شنبه 28 تیر 1393, 21:56 عصر
سلام از بس هواسم رو php بوده که دقت نکردم

amiryaser
شنبه 28 تیر 1393, 22:49 عصر
ایندفه تو سی شارپ اجرا کردم خطاش اینه میشه بگین خطاش کجاست و باید چیکا کنم121299

danialafshari
شنبه 28 تیر 1393, 23:36 عصر
سلام
فکر کنم این کار با asp راحت تر باشه
سایت های ف*ی*ل*ت*ر شده خصوصیتشون، Timed out هست
از کد زیر می تونید استفاده کنید فقط یکم زمان میبره تا Result بده
private void button1_Click(object sender, EventArgs e) {
try
{
WebClient wc = new WebClient();
string sName = wc.DownloadString("http://www.google.com/");


MessageBox.Show("سایت فیلتر نیست");
}
catch
{
MessageBox.Show("سایت فیلتر است");
}
}
موفق باشید