public IPttRequest RequestWithCaptchaValue(IPttRequest request, IPttCaptcha pttCaptcha) { var htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.LoadHtml(request.Response); var challengeField = htmlDoc.DocumentNode.SelectSingleNode("//input[@id='recaptcha_challenge_field']"); if (challengeField == null) { return null; } var challengeFieldValue = challengeField.Attributes["value"].Value; var pttRequestFactory = new PttRequestFactory(request); var newReq = pttRequestFactory.Deserialize(string.Format("<Request><Url>{0}</Url><Method>POST</Method></Request>", request.Url)); newReq.PostValue = string.Format("recaptcha_challenge_field={0}&recaptcha_response_field={1}&submit=I%27m+a+human", challengeFieldValue, pttCaptcha.Value ?? ""); newReq.WrappedRequest.ContentType = "application/x-www-form-urlencoded"; var pttResponse = new PttResponse(); //bu gelen htmlsource dan textarea degerini oku htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.LoadHtml(pttResponse.GetResponse(newReq)); var valueToPasteNode = htmlDoc.DocumentNode.SelectSingleNode("//textarea"); if (valueToPasteNode == null) { return null; } return null; }
public IPttRequest RequestWithCaptchaValue(IPttRequest request, IPttCaptcha pttCaptcha) { var pttRequestFactory = new PttRequestFactory(request); var newReq = pttRequestFactory.Deserialize(string.Format("<Request><Url>{0}</Url><Method>POST</Method><Referer>{0}</Referer></Request>", request.Url)); newReq.WrappedRequest.ContentType = "application/x-www-form-urlencoded"; newReq.PostValue = Regex.Replace(request.PostValue, @"packageSearchCaptcha=[^&]*&", "packageSearchCaptcha=" + pttCaptcha.Value + "&"); return newReq; }
public IPttRequest RequestWithCaptchaValue(IPttRequest request, IPttCaptcha pttCaptcha) { var pttRequestFactory = new PttRequestFactory(request); var newReq = pttRequestFactory.Deserialize(string.Format("<Request><Url>{0}</Url><Method>POST</Method></Request>", request.Url)); newReq.PostValue = "samo_action=antibot&are_you_human=" + pttCaptcha.Value; newReq.WrappedRequest.ContentType = "application/x-www-form-urlencoded"; return newReq; }
public IPttCaptcha CaptchaImage(IPttRequest request, string htmlSource) { if (_extensiveLoggingNeeded) { Logger.LogProcess("TezCaptcha CaptchaImage to be parsed from:" + htmlSource); } var jss = new JavaScriptSerializer(); var dict = jss.Deserialize<dynamic>(htmlSource); string captchaFormHtml = ""; var captchaFormUrl = ""; if (dict.ContainsKey("message")) { if (dict["message"] == "captchaEnable") { if (_extensiveLoggingNeeded) { Logger.LogProcess("TezCaptcha CaptchaImage captchaEnable message came"); } Thread.Sleep(TimeSpan.FromSeconds(3)); captchaFormUrl = HttpUtility.UrlDecode((string)dict["ref"]); if (_extensiveLoggingNeeded) { Logger.LogProcess("TezCaptcha CaptchaImage captcha form url:" + captchaFormUrl); } var pttRequestFactory = new PttRequestFactory(request, false); var newReq = pttRequestFactory.Deserialize(string.Format("<Request><Url>{0}</Url></Request>",captchaFormUrl)); if (_extensiveLoggingNeeded) { Logger.LogProcess("TezCaptcha CaptchaImage newRequest created:" + newReq); } try { IPttResponse response = new PttResponse(); captchaFormHtml = response.GetResponse(newReq); newReq.WrappedRequest = null; GC.Collect(); } catch (Exception exception) { Logger.LogProcess("TezCaptcha CaptchaImage newrequest response error:"); Logger.LogExceptions(exception); } if (_extensiveLoggingNeeded) { Logger.LogProcess("TezCaptcha CaptchaImage captcha form html:" + captchaFormHtml); } } } var html = new HtmlDocument(); html.LoadHtml(captchaFormHtml); var captchaValue = html.DocumentNode.SelectSingleNode("//input[@name='image']"); if (captchaValue == null) { if (_extensiveLoggingNeeded) { Logger.LogProcess("TezCaptcha CaptchaImage captcha image useing default value"); } return new PttCaptcha() { Url = "http://www.tez-tour.com/captcha/images/19E9EE6B59814EF25AAC404E5336EA2E.png", FormUrl = captchaFormUrl }; } if (_extensiveLoggingNeeded) { Logger.LogProcess("TezCaptcha CaptchaImage captcha image extracted:" + captchaValue.Attributes["value"].Value); } return new PttCaptcha() { Url = string.Format("http://www.tez-tour.com/captcha/images/{0}.png", captchaValue.Attributes["value"].Value), FormUrl = captchaFormUrl }; }
public IPttRequest RequestWithCaptchaValue(IPttRequest request, IPttCaptcha pttCaptcha) { if (_extensiveLoggingNeeded) { Logger.LogProcess("TezCaptcha RequestWithCaptchaValue captcha coming:" + pttCaptcha.ToString()); } var pttRequestFactory = new PttRequestFactory(request); var newRequest = pttRequestFactory.Deserialize( string.Format("<Request><Url>{0}</Url><Referer>{1}</Referer><Method>POST</Method></Request>", "http://www.tez-tour.com/captcha/check.htm", "http://www.tez-tour.com/captcha/index.htm?locale=ru&pr=s&ref=http://www.tez-tour.com/search.html" )); newRequest.WrappedRequest.AllowAutoRedirect = false; newRequest.WrappedRequest.Timeout = newRequest.WrappedRequest.Timeout * 4; newRequest.WrappedRequest.ReadWriteTimeout = newRequest.WrappedRequest.ReadWriteTimeout * 4; newRequest.WrappedRequest.ServicePoint.ConnectionLeaseTimeout = newRequest.WrappedRequest.Timeout; newRequest.WrappedRequest.ServicePoint.MaxIdleTime = newRequest.WrappedRequest.Timeout; var captchaImageUri = new Uri(pttCaptcha.Url); var captchaFileNameWithExtension = Path.GetFileNameWithoutExtension(captchaImageUri.AbsolutePath); var captchaUrl = pttCaptcha.FormUrl; var hashStart = captchaUrl.IndexOf("#"); if (hashStart > -1) captchaUrl = captchaUrl.Substring(hashStart); captchaUrl = HttpUtility.UrlEncode(HttpUtility.UrlEncode(captchaUrl)); if (_extensiveLoggingNeeded) { Logger.LogProcess("TezCaptcha RequestWithCaptchaValue captchaurl parsed:" + captchaUrl); } newRequest.PostValue = string.Format("image={0}&ref={3}&pr=s&hashRef={2}&answer={1}&submit=%D0%AF+%D0%BD%D0%B5+%D1%80%D0%BE%D0%B1%D0%BE%D1%82%21", captchaFileNameWithExtension, pttCaptcha.Value, captchaUrl, "http%3A%2F%2Fwww.tez-tour.com%2Fsearch.html"); newRequest.WrappedRequest.ContentType = "application/x-www-form-urlencoded"; return newRequest; }