PDA

View Full Version : سوال: پر كردن فيلد هاي وب سايت توسط برنامه



debugger
چهارشنبه 25 آذر 1388, 09:55 صبح
دوستان من ميخوام توسط برنامه فيلد هاي يك وب سايت را پر كنم و بعد روي دكمه submit كليك كنم (توسط برنامه) و در صورتي كه captcha هم داشته باشه اونو هم تو برنامه نشان بدم كه كاربر كد را در برنامه وارد كند


I need to write a C# windows application that can open a web page, fill in the fields and click the submit button on the web page automatically.


هيچ sample يا توضيحي در اين رابطه براي سي شارپ پيدا نكردم تو اينترنت سرچ كردم فقط براي asp.net هست

با تشكر

13601360
چهارشنبه 25 آذر 1388, 10:39 صبح
دوستان من ميخوام توسط برنامه فيلد هاي يك وب سايت را پر كنم و بعد روي دكمه submit كليك كنم (توسط برنامه) و در صورتي كه captcha هم داشته باشه اونو هم تو برنامه نشان بدم كه كاربر كد را در برنامه وارد كند


I need to write a C#‎ windows application that can open a web page, fill in the fields and click the submit button on the web page automatically.


هيچ sample يا توضيحي در اين رابطه براي سي شارپ پيدا نكردم تو اينترنت سرچ كردم فقط براي ASP.NET هست

با تشكر


از کنترل Web Browser میشه استفاده کرد آدرس صفحه مورد نظر رو بهش بده و توی رویداد DocumentCompleted مثلا کد زیر رو برای لاگین توی سایت استفاده کن




System.Windows.Forms.HtmlDocument doc = this.webBrowser1.Document;
doc.All["Site_UserName"].SetAttribute("value", "Ali");
doc.All["Site_Password"].SetAttribute("value", "123");
doc.All["Site_Login"].InvokeMember("click");


Site_UserName و Site_Password که ID تکس باکس مربوط به یوزر نیم و پسورد هست.
Site_Login هم ID دکمه submit هست

debugger
چهارشنبه 25 آذر 1388, 12:25 عصر
ممنون از توضيحات خوبتون مشكل ارسال حل شد

حالا چطوري ميشه captcha را در برنامه لود كرد

13601360
چهارشنبه 25 آذر 1388, 13:28 عصر
ممنون از توضيحات خوبتون مشكل ارسال حل شد

حالا چطوري ميشه captcha را در برنامه لود كرد
ببین ای کد کمک می کنه



string str = doc.All["id_captcha "].GetAttribute("src");
str رو هم به یک picturebox بده

debugger
چهارشنبه 25 آذر 1388, 14:42 عصر
متاسفانه هر چقدر با كد ها ور رفتم نشد

اگر شما sample كوچيكي بزارين خيلي عالي ميشه

يا اگر ميخواهين من سورسمو اپ كنم

13601360
چهارشنبه 25 آذر 1388, 17:41 عصر
این لینک رو ببین دوست عزیز

http://koolprogrammer.blogspot.com/2009/05/catching-captcha-image-part-1-c.html

debugger
چهارشنبه 25 آذر 1388, 23:00 عصر
وبلاگ را ديدم طرف زياد هدفش اين بوده Code captcha را با ocr بيرون بكشه

منم سورسشو ديدم اصلا نتونسته captcha را لود كنه چه برسه به ocr

چون captcha در بلاگفا از همه اخر لود ميشه اومده دستور زير را نوشته




wb.Document.InvokeScript("showhumanimg");


در حالي كه مي تونه موقع پر كردن فيلد ها اين كد را بنويسه




doc.All["cmtcont"].Focus();


خيلي پيچونده اخرش هم captcha لود نشده

debugger
پنج شنبه 26 آذر 1388, 15:54 عصر
از دوستان كسي ميدونه چطور ميشه ليست وبلاگ ها را به دست اورد

مثل برنامه هاي url spider ؟؟؟؟؟

13601360
پنج شنبه 26 آذر 1388, 17:23 عصر
از دوستان كسي ميدونه چطور ميشه ليست وبلاگ ها را به دست اورد

مثل برنامه هاي url spider ؟؟؟؟؟

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

میشه بگی دقیقا می خوای چیکار کنی

13601360
پنج شنبه 26 آذر 1388, 17:37 عصر
وبلاگ را ديدم طرف زياد هدفش اين بوده Code captcha را با ocr بيرون بكشه

منم سورسشو ديدم اصلا نتونسته captcha را لود كنه چه برسه به ocr

چون captcha در بلاگفا از همه اخر لود ميشه اومده دستور زير را نوشته




wb.Document.InvokeScript("showhumanimg");


در حالي كه مي تونه موقع پر كردن فيلد ها اين كد را بنويسه




doc.All["cmtcont"].Focus();


خيلي پيچونده اخرش هم captcha لود نشده




من الان تست کردم کار کرد که تو یه بلاگ اسکای



pictureBox1.Load(doc.All["imgCaptcha"].GetAttribute("src"));


ولی یه مشکل داره عکس captchaاونی نیست که تو pictureBox هست

debugger
پنج شنبه 26 آذر 1388, 18:12 عصر
من ميخوام برنامه اي بنويسم كه تو وبلاگها نظر ثبت كنه

مشكلات اينا هستن

1 _ چطور ميشه ليست وبلاگ هاي تازه بروز شده و ليست كل وبلاگها را پيدا كرد

2 _ چطور ميشه captcha را لود كرد در برنامه

مشكلات ريز تر هم اينا هستند

براي ثبت نظر در persinblog.ir كه captcha وجود نداره پس اگر مشكل 1 حل بشه تقريبا مساله پرشين بلاگ حله

براي ثبت نظر در بلاگفا و ... هم ID ايه textbox اي كه جولوي captcha هست تو همه وبلاگ ها متفاوته

يعني نميشه چيزي ارسال كرد اول بايد id را به دست بياريم

اين دو لينك را ببينيد

http://cz-praha.blogfa.com/comments/?blogid=cz-praha&postid=22&timezone=3628

http://yaadhaa.blogfa.com/comments/?blogid=yaadhaa&postid=31&timezone=12642

مي بينيد كه لينك نظرات از سه بخش تشكيل شده

blogid كه همون اسم وبلاگ هست مشكلي نيست

postid را از كجا بايد پيدا كنيم (نظر بايد در اخرين پست ارسال شده ثبت بشه)

timezone از كجا بدست مياد ؟؟؟؟؟

اين دو تا لينك كه مربوط به پرشين بلاگ هست را ببينيد

http://comments.persianblog.ir/?blogID=238247&postID=3934707&blogName=zicer

http://comments.persianblog.ir/?blogID=218623&postID=3934677&blogName=littleactress

مي بينيد كه از 3 بخش تشكيل شده

blogname كه همون اسم وبلاگه اگر ليست وبلاگها را پيدا كنيم اين مورد حل شده

postid را چطوري بايد حساب كنيم ؟؟ (اخرين پست ارسال شده مد نظره)

blogid را چطوري بايد پيدا كرد؟؟؟

13601360
پنج شنبه 26 آذر 1388, 19:05 عصر
من ميخوام برنامه اي بنويسم كه تو وبلاگها نظر ثبت كنه

مشكلات اينا هستن

1 _ چطور ميشه ليست وبلاگ هاي تازه بروز شده و ليست كل وبلاگها را پيدا كرد

2 _ چطور ميشه captcha را لود كرد در برنامه

مشكلات ريز تر هم اينا هستند

براي ثبت نظر در persinblog.ir كه captcha وجود نداره پس اگر مشكل 1 حل بشه تقريبا مساله پرشين بلاگ حله

براي ثبت نظر در بلاگفا و ... هم ID ايه textbox اي كه جولوي captcha هست تو همه وبلاگ ها متفاوته

يعني نميشه چيزي ارسال كرد اول بايد id را به دست بياريم

اين دو لينك را ببينيد

http://cz-praha.blogfa.com/comments/?blogid=cz-praha&postid=22&timezone=3628

http://yaadhaa.blogfa.com/comments/?blogid=yaadhaa&postid=31&timezone=12642

مي بينيد كه لينك نظرات از سه بخش تشكيل شده

blogid كه همون اسم وبلاگ هست مشكلي نيست

postid را از كجا بايد پيدا كنيم (نظر بايد در اخرين پست ارسال شده ثبت بشه)

timezone از كجا بدست مياد ؟؟؟؟؟

اين دو تا لينك كه مربوط به پرشين بلاگ هست را ببينيد

http://comments.persianblog.ir/?blogID=238247&postID=3934707&blogName=zicer

http://comments.persianblog.ir/?blogID=218623&postID=3934677&blogName=littleactress

مي بينيد كه از 3 بخش تشكيل شده

blogname كه همون اسم وبلاگه اگر ليست وبلاگها را پيدا كنيم اين مورد حل شده

postid را چطوري بايد حساب كنيم ؟؟ (اخرين پست ارسال شده مد نظره)

blogid را چطوري بايد پيدا كرد؟؟؟

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



1-
System‎.Net.WebClient webClient = new System‎.Net.WebClient();
webClient.Encoding = System.Text.Encoding.UTF8;
string strSource = webClient.DownloadString("http://www.google.com");
textBox1.Text = strSource;


-2

System.IO.Stream strm = System‎‎.Net.WebRequest.Create("http://www.google.com")
.GetResponse().GetResponseStream();
StreamReader str = new StreamReader(strm);
textBox1.Text = str.ReadToEnd();




3-

HttpWebRequest myWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
myWebRequest.Method = "GET";
HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
StreamReader myWebSource = new StreamReader(myWebResponse.GetResponseStream());
string myPageSource = myWebSource.ReadToEnd();
textBox1.Text = myPageSource;
myWebResponse.Close();




4-

StringBuilder sb = new StringBuilder();
byte[] buf = new byte[8192];
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
do
{
count = resStream.Read(buf, 0, buf.Length);
if (count != 0)
{
tempString = Encoding.UTF8.GetString(buf, 0, count);
sb.Append(tempString);
}
}
while (count > 0);
textBox1.Text = sb.ToString();

debugger
پنج شنبه 26 آذر 1388, 19:51 عصر
خيلي جالبه اقا هر چي سايت مي نويسم كدشو تو تكست باكس نشون ميده

الا persianblog.ir

اينطوري هم نوشتم http://persianblog.ir يا http://www.persianblog.ir يا www.persianblog.ir (http://www.persianblog.ir)

هر چهار تا كد را هم تست كردم شما هم يه تستي بكنيد

debugger
جمعه 27 آذر 1388, 19:58 عصر
در مورد blogid , postid كسي اطلاعاتي داره ؟؟؟ كه چطور بايد محاسبه بشه ؟؟؟؟