سلام دوستان
من میخوام توی برنامم تشخیص بدم که یک سایت فیلتر هست یا نه.چطوری میتونم اینو بفهمم؟
سلام دوستان
من میخوام توی برنامم تشخیص بدم که یک سایت فیلتر هست یا نه.چطوری میتونم اینو بفهمم؟
خیلی راحت از ادرسی که بهش ریدایرکت میشه میتونی بفهمی دیگه !
یعنی چطوری؟میشه کامل تر توضیح بدین؟
از وب برازر استفاده میکنی برای باز کردن سایت ؟
اینجوری میشه
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();
}
ولی اگر از تولبار اضافه میکنی دیگه خودت داری میبینی تعو پروپرتی ها در قسمت اونت هاش همون گزینه ها را داره تا روشون کلیک کنی خودشون ایجاد میشن دیگه کد نویسی نداره
کافیه ؟
ممنون از شما.البته من تو برنامم از وب بروزر استفاده نمیکنم.میخوام یک تابع داشته باشم که تشخیص بده یک سایت فیلتر هست یا نه.اول از پینگ استفاده کردم دیدم که خوب جواب نمیده
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" + "فیلتر نیست");
}
آخرین ویرایش به وسیله mehrdad1991h : چهارشنبه 21 اسفند 1392 در 15:58 عصر
ممنون mehrdad1991h عزیز.به نظرم این منطقی تر بیاد.میرم چکش کنم
سلام من هر کار می کنم این خطا رو داره Untitled.jpg
نمی شه کدی نوشت که آدرس بعدی بدون فیلتر و واسمون بیاره من هنوز از کد قبلی نتیجه نگرفتم میشه کمکم کنید خیلی بهش احتیاج دارم
این کد ها که دوستان کلی زحمت کشیدند و به شما داده اند سی شارپ است !
شما چرا در پی اچ پی دیزاینر کدها را کپی کرده اید !!!
اصلا اینجا بخش C# است
سلام از بس هواسم رو php بوده که دقت نکردم
ایندفه تو سی شارپ اجرا کردم خطاش اینه میشه بگین خطاش کجاست و باید چیکا کنمUntitled.jpg
سلام
فکر کنم این کار با 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("سایت فیلتر است");
}
}
موفق باشید