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 IPttCaptcha CaptchaImage(IPttRequest request, string htmlSource) { var htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.LoadHtml(htmlSource); var iframe = htmlDoc.DocumentNode.SelectSingleNode("//iframe"); if (iframe == null) { return null; } var iframeSrc = iframe.Attributes["src"].Value; var newRequest = new PttRequest(iframeSrc) {WrappedRequest = {ContentType = "text/html", Method = "GET"}}; IPttResponse response = new PttResponse(); var captchaFormHtml = response.GetResponse(newRequest); htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.LoadHtml(captchaFormHtml); var captchaImg = htmlDoc.DocumentNode.SelectSingleNode("//img"); if (captchaImg == null) { return null; } var captchaSrc = string.Format("http://{0}/recaptcha/api/{1}", googleHost, captchaImg.Attributes["src"].Value); return new PttCaptcha() { Url = captchaSrc, RequestUsed = newRequest, FormUrl = iframeSrc}; }
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 }; }