-2

嗨,曾经的身体,我是 c# webscraping 的新手。

我想登录http://telelisting.ca/但我不能。我曾经使用过WebClientWebBrowser现在HttpWebRequest,但总是发生相同的错误,即服务器异常 500。

任何人都可以帮助我做错什么吗?

CookieCollection cookies = new CookieCollection();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://telelisting.ca/");
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookies);
//Get the response from the server and save the cookies from the first request..
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
cookies = response.Cookies;
string getUrl = "http://telelisting.ca/";
string postData = String.Format("ctl00_LoginPopup1_Login1_UserName={0}&ctl00_LoginPopup1_Login1_Password={1}&__LASTFOCUS={2}&__EVENTTARGET={3}&__EVENTARGUMENT={4}&__VIEWSTATE={5}&__EVENTVALIDATION={6}&ctl00_LoginPopup1_Login1_LoginButton={7}&ctl00_LoginPopup1_hiddenImagePath={8}&ctl00_cphContent_hiddenVideoDialogTitle={9}&ctl00_cphContent_hiddenShowDefaultVideo={10}", "fg@xyz.com", "abcede", "", "", "", "/wEPDwUKMTYzMzk2MDQwNQ9kFgJmD2QWAgIDDxYEHgVjbGFzc2UeCG9udW5sb2FkBQ9PbkVuZFNlc3Npb24oKTsWAgIBD2QWDAIHD2QWBAIDD2QWAgIDDw8WBB4EVGV4dAUVRm9yZ290IHlvdXIgcGFzc3dvcmQ/HgtOYXZpZ2F0ZVVybAUWfi9wYXNzd29yZHJlY292ZXIuYXNweGRkAgUPDxYCHg9WYWxpZGF0aW9uR3JvdXAFGGN0bDAwJExvZ2luUG9wdXAxJExvZ2luMWRkAgkPZBYCAgEPFgIeBGhyZWYFHmphdmFzY3JpcHQ6U2hvd1ZpZGVvQ29udGVudCgpO2QCCw9kFgICAQ9kFgYCCw8PFgIfAwURL0RlZmF1bHQuYXNweD9sPTBkZAIND2QWAgIBD2QWAmYPFgIfAAURRW1wdHlTaG9wcGluZ0NhcnQWAgIBDw8WAh8CBXgmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtkZAIZDw8WAh4HVmlzaWJsZWhkZAIND2QWAgIBD2QWAgIBDw8WAh8CBTM8c3Ryb25nPjxhIGhyZWY9IkRlZmF1bHQuYXNweCI+SG9tZTwvYT4gPiA8L3N0cm9uZz5kZAIPD2QWBAIJDw8WAh8CBdgJPG1hcnF1ZWUgU0NST0xMREVMQVk9JzE1MCcgPkF1ZyAxOCAtIE5ldyBDbGllbnQgaW4gPGI+TWFnb2cnPC9iPi4uLi4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBdWcgMTYgLSBOZXcgQ2xpZW50IGluIDxiPkxvbmRvbic8L2I+Li4uLiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0F1ZyAxNiAtIE5ldyBDbGllbnQgaW4gPGI+U3QuIE1hcnlzJzwvYj4uLi4uJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QXVnIDE2IC0gTmV3IENsaWVudCBpbiA8Yj5CYXJyaWUnPC9iPi4uLi4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBdWcgMTQgLSBOZXcgQ2xpZW50IGluIDxiPkJhcnJpZSc8L2I+Li4uLiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0F1ZyAxNCAtIE5ldyBDbGllbnQgaW4gPGI+VmFuY291dmVyJzwvYj4uLi4uJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QXVnIDEzIC0gTmV3IENsaWVudCBpbiA8Yj52YXVnaGFuJzwvYj4uLi4uJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QXVnIDEzIC0gTmV3IENsaWVudCBpbiA8Yj5Mb25ndWV1aWwnPC9iPi4uLi4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBdWcgMTMgLSBOZXcgQ2xpZW50IGluIDxiPlRvcm9udG8nPC9iPi4uLi4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBdWcgMTIgLSBOZXcgQ2xpZW50IGluIDxiPlN0ZS1DYXRoZXJpbmUtZGUtbGEtSi4tQy4nPC9iPi4uLi4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBdWcgMDkgLSBOZXcgQ2xpZW50IGluIDxiPk5ld21hcmtldCAnPC9iPi4uLi4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBdWcgMDggLSBOZXcgQ2xpZW50IGluIDxiPkJyYW1wdG9uJzwvYj4uLi4uJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QXVnIDA3IC0gTmV3IENsaWVudCBpbiA8Yj5WYW5jb3V2ZXInPC9iPi4uLi4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBdWcgMDcgLSBOZXcgQ2xpZW50IGluIDxiPk90dGF3YSc8L2I+Li4uLiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0F1ZyAwNyAtIE5ldyBDbGllbnQgaW4gPGI+VHJvaXMtUml2acOocmVzJzwvYj4uLi4uJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9tYXJxdWVlPmRkAhEPZBYCZg8PFgIfAgXyAzxoMyBjbGFzcz0idGl0bGVuYXYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZlcnJhbCBQcm9ncmFtPC9oMz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJyMjUiPjEgTW9udGggRnJlZSEgPC9wPiAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9InRlc3RpbW9uaWFsbmF2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXIgY29sbGVhZ3VlcyBhbmQgZnJpZW5kcyB0byBUZWxlbGlzdGluZyBhbmQgcmVjZWl2ZSAxIE1vbnRoIEZyZWUgYWNjZXNzIHRvIG91ciBwaG9uZWJvb2sgc2VydmljZSBmb3IgZXZlcnkgcmVmZXJyYWwgdGhhdCByZXN1bHRzIGluIGEgcGFpZCBzdWJzY3JpcHRpb24uIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4NCjxhIHJ1bmF0PSJzZXJ2ZXIiIGhyZWY9IlJlZmVycmFsTG9naW4uYXNweCIgY2xhc3M9ImJ1eW5vdyI+UmVmZXIgTm93PC9hPiAgICAgICANCmRkAhEPZBYCAgEPZBYMAgMQPCsACQEADxYEHghEYXRhS2V5cxYAHgtfIUl0ZW1Db3VudGZkZGQCBQ8PZA8QFgFmFgEWAh4OUGFyYW1ldGVyVmFsdWUFBWVuLVVTFgECBmRkAgkQPCsACQEADxYEHwcWAB8IZmRkZAILDw9kDxAWAmYCARYCFgIfCWQWAh8JBQVlbi1VUxYCAgMCBmRkAg8QPCsACQEADxYEHwcWAB8IAgFkZBYCZg9kFgICAQ8PFgIfAgW1AUkndmUgYmVlbiB1c2luZyBUZWxlbGlzdGluZyBzZXJ2aWNlcyAgZm9yIHRoZSBsYXN0IDMgeWVhcnMgbm93IGFuZCB0aGV5IHJlYWxseSBoZWxwIG1lIGNvbmNlbnRyYXRlIG9uIGJ1aWxkaW5nIG15IGJ1c2luZXNzIGFuZCBpbiBjbG9zaW5nIG1vcmUgb3Bwb3J0dW5pdGllcyBldmVyeSB5ZWFyLg0KDQpNLiBTbWl0aC5kZAIRDw9kDxAWAWYWARYCHwkFBWVuLVVTFgECBmRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBSNjdGwwMCRMb2dpblBvcHVwMSRMb2dpbjEkUmVtZW1iZXJNZQUpY3RsMDAkTG9naW5Qb3B1cDEkTG9naW4xJExvZ2luSW1hZ2VCdXR0b25RUp74UUPL72rYSQL3cfYMy9DWZU4l5e0kF3vCJf5fkQ==", "/wEWCQL9vYfeCAKVyobIBgKB94O0CwKz7JHYDQLsu7CWDgL31sOaAQLmjZ/bDQLto+ilAwLC4KCXAqOJh1kiYkswzxstW/o4u1wgJbA0/EnFO2L8sDvV8fVl", "Log In", "/HSIControl", "Telelisting Instruction Video", "");
HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create(getUrl);
getRequest.CookieContainer = new CookieContainer();
getRequest.CookieContainer.Add(cookies); //recover cookies First request
getRequest.Method = WebRequestMethods.Http.Post;
//Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
getRequest.ContentType = "text/html";

getRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
getRequest.AllowWriteStreamBuffering = true;
getRequest.ProtocolVersion = HttpVersion.Version11;
getRequest.AllowAutoRedirect = true;
getRequest.ContentType = "application/x-www-form-urlencoded";

byte[] byteArray = Encoding.ASCII.GetBytes(postData);
getRequest.ContentLength = byteArray.Length;
Stream newStream = getRequest.GetRequestStream(); //open connection
newStream.Write(byteArray, 0, byteArray.Length); // Send the data.
newStream.Close();

HttpWebResponse getResponse = (HttpWebResponse)getRequest.GetResponse();
using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
{
   string sourceCode = sr.ReadToEnd();
   Debug.WriteLine(sourceCode);
} 
4

3 回答 3

0

范围内的服务器错误500意味着服务器端出现问题。从您的请求的外观来看,我认为它可能与您发布的 Viewstate 变量有关。服务器将尝试根据您提交的状态重建页面。这不是你只是复制和粘贴的东西。您是否尝试过仅发送与登录本身相关的参数(名称、密码、单击的按钮的名称)?

于 2013-08-19T13:59:49.613 回答
0

对于您的工作,请参阅 fiddler 运行相同的请求并查看 cookie 匹配和其他发布参数。

并尝试:

postparameter=  UrlEncode(postparameter) 

在将它们转换为字节之前,看看它是否有效。

也许它是这样工作的。

于 2013-08-19T19:37:04.630 回答
-1

为什么不去浏览器中要抓取的确切页面,然后导出完整的 COOKIE 集以手动附加到脚本的标题?

于 2013-08-25T12:39:00.573 回答