C# 屏幕抓取-按代码进行旁路验证码验证[流量问题]

C# 屏幕抓取-按代码进行旁路验证码验证[流量问题],c#,asp.net,web-services,httpwebrequest,screen-scraping,C#,Asp.net,Web Services,Httpwebrequest,Screen Scraping,我正在用c#在asp.net中做一个屏幕抓取项目,我可以成功地抓取屏幕。 但我必须一个接一个地向目标服务器发出多个请求,但过了一段时间,服务器重定向到验证码验证页面,当时我卡住了 这是我的密码: public static string SearchPage(Uri url, int timeOutSeconds) { StringBuilder sb = new StringBuilder(); try {

我正在用c#在asp.net中做一个屏幕抓取项目,我可以成功地抓取屏幕。 但我必须一个接一个地向目标服务器发出多个请求,但过了一段时间,服务器重定向到验证码验证页面,当时我卡住了

这是我的密码:

    public static string SearchPage(Uri url, int timeOutSeconds)
    {
        StringBuilder sb = new StringBuilder();

        try
        {
            string place = HttpUtility.ParseQueryString(url.Query).Get("destination").Split(':')[1];
            string resultID = HttpUtility.ParseQueryString(url.Query).Get("resultID");
            string checkin = HttpUtility.ParseQueryString(url.Query).Get("checkin").Replace("-", "");
            string checkout = HttpUtility.ParseQueryString(url.Query).Get("checkout").Replace("-", "");
            string Rooms = HttpUtility.ParseQueryString(url.Query).Get("Rooms");
            string adults_1 = HttpUtility.ParseQueryString(url.Query).Get("adults_1");
            string languageCode = "EN";
            string currencyCode = "INR";
            string ck = "languageCode=" + languageCode + "; a_aid=400; GcRan=1; __RequestVerificationToken=IHZjc7KM_LbUXRypz02LoK4wmeLNcmRpIr-6vmPl5eNepILScAc15vn0TgQJtmABgedDy8xz4bnkqC30_zUGE1A1SaA1; Analytics=LandingID=place:77469:0m&LanguageCode=" + languageCode + "&WebPageID=9; Tests=165F000901000A1100F81000FE110100000102100103100104000105100052; dcid=dal05; currencyCode=" + currencyCode + "; countryCode=" + languageCode + "; search=place:" + place + "#" + checkin + "#" + checkout + "#" + adults_1 + "; SearchHistory=" + place + "%" + checkin + "%" + checkout + "%" + adults_1 + "%" + currencyCode + "%%11#" + place + "%" + checkin + "%" + checkout + "%" + adults_1 + "%" + currencyCode + "%%" + resultID + "#; visit=date=2015-11-23T18:26:05.4922127+11:00&id=45111733-acef-47d1-aed3-63cef1a60591; visitor=id=efff4190-a4a0-41b5-b807-5d18e4ee6177&tracked=true";


            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Timeout = timeOutSeconds * 1000;
            request.ReadWriteTimeout = timeOutSeconds * 1000;
            request.KeepAlive = true;
            request.Method = "GET";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36 OPR/33.0.1990.115";
            request.Headers.Add("Accept-Language", "en-US,en;q=0.8");
            request.Headers.Add("Cookie", ck);
            request.Headers.Add("Upgrade-Insecure-Requests", "1");
            request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);

            StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream());

            string line = reader.ReadToEnd();

            sb.Append(line);
            sb.Replace("<br/>", Environment.NewLine);
            sb.Replace("\n", Environment.NewLine);
            sb.Replace("\t", " ");

            reader.Close();
            reader.Dispose();
            request.Abort();

        }
        catch (Exception ex)
        {
            //throw ex;
        }

        return sb.ToString();
    }
publicstaticstringsearchpage(uriurl,int-timeOutSeconds)
{
StringBuilder sb=新的StringBuilder();
尝试
{
string place=HttpUtility.ParseQueryString(url.Query).Get(“destination”).Split(“:”)[1];
字符串resultID=HttpUtility.ParseQueryString(url.Query.Get(“resultID”);
string checkin=HttpUtility.ParseQueryString(url.Query).Get(“checkin”).Replace(“-”,”);
string checkout=HttpUtility.ParseQueryString(url.Query).Get(“checkout”).Replace(“-”,”);
stringrooms=HttpUtility.ParseQueryString(url.Query.Get(“Rooms”);
字符串成人_1=HttpUtility.ParseQueryString(url.Query.Get(“成人_1”);
字符串语言code=“EN”;
字符串currencyCode=“INR”;
string ck=“languageCode=“+languageCode+”;a_-aid=400;GcRan=1;uuu-RequestVerificationToken=IHZjc7KM\u-LbUXRypz02LoK4wmeLNcmRpIr-6VMPL5ENEPILSCAC15VN0TGQJTMABGED8XZ4BNKQC30_-ZUGE1A1A1A1A1A1AAA1;Analytics=LandingID=place:77469:0m&languageCode=“+languageCode+“&WebPageID=9;Tests=165F000901000A1100F81000FE1101000000102100103100104000105100052;dcid=dal05;currencyCode=“+currencyCode+”;countryCode=“+languageCode+”;search=place:“+place+”;+checkin+”;“+checkout+”+“\checkout+”;“search history=“+place+”%”+“%+checkin+”+“%+checkout+”%”+“%#“+place+“%”+“%”+签入+“%”+签出+“%”+成人1+“%”+currencyCode+“%”+resultID+”;访问=日期=2015-11-23T18:26:05.4922127+11:00&id=45111733-acef-47d1-aed3-63CEF1A6051;访客=id=EFFFF4190-a4a0-41b5-b807-5D18E46177&tracked=true”;
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(url);
request.Timeout=timeOutSeconds*1000;
request.ReadWriteTimeout=timeOutSeconds*1000;
request.KeepAlive=true;
request.Method=“GET”;
request.Accept=“text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8”;
request.UserAgent=“Mozilla/5.0(Windows NT 6.3;WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/46.0.2490.86 Safari/537.36 OPR/33.0.1990.115”;
添加(“接受语言”,“en-US,en;q=0.8”);
添加(“Cookie”,ck);
添加(“升级不安全请求”,“1”);
request.CachePolicy=新的RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
StreamReader=新的StreamReader(request.GetResponse().GetResponseStream());
string line=reader.ReadToEnd();
某人附加(行);
sb.Replace(“
”,Environment.NewLine); sb.替换(“\n”,Environment.NewLine); 替换(“\t”和“); reader.Close(); reader.Dispose(); request.Abort(); } 捕获(例外情况除外) { //掷骰子; } 使某人返回字符串(); }

此代码工作成功,但在一些请求后它会被卡住,因为可能是服务器允许一些有限的请求。

您知道captcha是用来阻止您正确操作的吗?那么问题是如何解决验证码?是的,罗恩。。我的问题是如何解决验证码?