public static string CurlSimplePost(string url, string postData, string host, bool chunked = false) { try { var pttRequestFactory = new PttRequestFactory(); var pttRequest = pttRequestFactory.SimpleRequest(url); pttRequest.Chunked = chunked; pttRequest.WrappedRequest.Host = host; pttRequest.WrappedRequest.Method = "POST"; pttRequest.WrappedRequest.ContentType = "application/x-www-form-urlencoded"; pttRequest.PostValue = postData; var pttResponse = new PttResponse(); return pttResponse.GetResponse(pttRequest); } catch (Exception exception) { Logger.LogExceptions(exception); } return null; }
protected string CaptchaPassedResult(IPttRequest request, string htmlSource) { IPttResponse response = new PttResponse(); var html = htmlSource; var captchaTries = 1; while (true) { var pttCaptcha = _captchaRequestResponse.CaptchaImage(request, html); if (_extensiveLoggingNeeded) { Logger.LogProcess("RequestResponseWithCaptcha CaptchaPassedResult coming captcha:"+ pttCaptcha); } try { var captchaResolve = ResolveCaptcha(request, pttCaptcha, captchaTries); pttCaptcha.Value = captchaResolve.Item1; pttCaptcha.FileNameInTempDir = captchaResolve.Item2; if (_extensiveLoggingNeeded) { Logger.LogProcess("RequestResponseWithCaptcha CaptchaPassedResult after resolving:" + pttCaptcha); } } catch (Exception exc) { Logger.LogExceptions(exc); return null; } IPttRequest captchaAddedRequest = _captchaRequestResponse.RequestWithCaptchaValue(request, pttCaptcha); if(_extensiveLoggingNeeded) { Logger.LogProcess("RequestResponseWithCaptcha CaptchaPassedResult captchaAddedRequest:"+captchaAddedRequest); } var captchaPassedResult = response.GetResponse(captchaAddedRequest); captchaAddedRequest.WrappedRequest = null; GC.Collect(); if (_extensiveLoggingNeeded) { Logger.LogProcess("RequestResponseWithCaptcha CaptchaPassedResult captchaPassedResult:" + captchaPassedResult); } if (_captchaRequestResponse.RepeatFirstRequest) { var pttRequestFactory = new PttRequestFactory(request); var firstRequest = pttRequestFactory.Deserialize(string.Format("<Request><Url>{0}</Url><Host>www.tez-tour.com</Host><Referer> <![CDATA[http://www.tez-tour.com]]></Referer></Request>", request.Url)); if (_extensiveLoggingNeeded) { Logger.LogProcess("RequestResponseWithCaptcha CaptchaPassedResult RepeatFirstRequest firstrequest:" + firstRequest); } captchaPassedResult = response.GetResponse(firstRequest); } if (_captchaRequestResponse.CaptchaShown(captchaPassedResult)) { Logger.LogProcess(string.Format("Incorrect captcha for {0}", pttCaptcha.FileNameInTempDir)); html = captchaPassedResult; captchaTries++; continue; } Logger.LogProcess(string.Format("Correct captcha for {0}", pttCaptcha.FileNameInTempDir)); return captchaPassedResult; } }
protected byte[] CaptchaImageBytes(IPttRequest request, string imageSource) { IPttRequestFactory pttRequestFactory = new PttRequestFactory(request, false); IPttResponse response = new PttResponse(); return response.GetResponseBytes(pttRequestFactory.SimpleRequest(imageSource)); }
public string GetResponse(IPttRequest request) { PrepareForPost(request); try { string result = ""; using (var response = (HttpWebResponse)request.WrappedRequest.GetResponse()) { if ((int)response.StatusCode >= 300 && (int)response.StatusCode <= 399) { //redirection varsa request url sini degistirt var uriString = response.Headers["Location"]; var pttRequestFactory = new PttRequestFactory(request); var newRequest = pttRequestFactory.Deserialize(string.Format("<Request><Url>{0}</Url><Method>GET</Method><Host>{1}</Host><Referer><![CDATA[{2}]]></Referer></Request>", uriString, request.WrappedRequest.Host, request.WrappedRequest.Referer)); request.Response = "Redirect"; response.Close(); Logger.LogProcess("PttResponse GetResponse url redirect newRequest:" + newRequest); return GetResponse(newRequest); } //http://stackoverflow.com/questions/227575/encoding-problem-with-httpwebresponse var charset = response.CharacterSet; var encoding = Encoding.Default; if (!string.IsNullOrEmpty(charset)) encoding = Encoding.GetEncoding(charset); if (!request.Chunked) { //request.WrappedRequest.CookieContainer.Add(response.Cookies);//buna gerek yok gibi, request.Cookies ile debug edince GetResponse da cookiler otomatik olarak doluyor zaten using (var respStream = response.GetResponseStream()) { respStream.ReadTimeout = 1000; using (var sr = new StreamReader(respStream, encoding)) { result = sr.ReadToEnd(); sr.Close(); } response.Close(); request.Response = result; return result; } } else { var sb = new StringBuilder(); var buf = new byte[8192]; using (var resStream = response.GetResponseStream()) { int count; do { count = resStream.Read(buf, 0, buf.Length); if (count == 0) continue; var tmpString = encoding.GetString(buf, 0, count); sb.Append(tmpString); } while (count > 0); resStream.Flush(); resStream.Close(); } response.Close(); request.Response = sb.ToString(); return sb.ToString(); } } } catch (Exception e) { throw e; } finally { request.WrappedRequest.Abort(); request.WrappedRequest = null; GC.Collect(); } }
public IEnumerable<IPttRequest> QueryRequest(string serializedRequests) { IPttRequestFactory requestFactory = new PttRequestFactory(Name, KeepAliveDefaultValue); return requestFactory.DeserializeList(serializedRequests, _lastRequest, FillSessionJar); }
private static void SetupProxy() { var proxyUserName = ConfigurationManager.AppSettings["proxyUserName"]; var proxyPassword = ConfigurationManager.AppSettings["proxyPassword"]; if (string.IsNullOrEmpty(proxyUserName) || string.IsNullOrEmpty(proxyPassword)) return; try { var pttRequestFactory = new PttRequestFactory(); var pttRequest = pttRequestFactory.SimpleRequest("http://vip.squidproxies.com/valid.php"); pttRequest.WrappedRequest.Host = "vip.squidproxies.com"; pttRequest.WrappedRequest.Method = "POST"; pttRequest.WrappedRequest.ContentType = "application/x-www-form-urlencoded"; pttRequest.PostValue = "username="******"&password="******"&button=Sign+In"; var pttResponse = new PttResponse(); pttResponse.GetResponse(pttRequest); var secondPttRequest = pttRequestFactory.SimpleRequest("http://vip.squidproxies.com/index.php?action=authips"); secondPttRequest.WrappedRequest.Host = "vip.squidproxies.com"; secondPttRequest.WrappedRequest.Referer = "http://vip.squidproxies.com/index.php?action=assignedproxies"; pttRequest.CopySession(secondPttRequest); pttResponse.GetResponse(secondPttRequest); //check if ip is in the list var document = new HtmlDocument(); document.LoadHtml(secondPttRequest.Response); var ipNode = document.DocumentNode.SelectSingleNode("//div[@class='bcont']"); if (ipNode == null || ipNode.FirstChild == null) return; var ipText = ipNode.FirstChild.InnerText.Trim(); //Your IP: 88.103.5.212; var words = ipText.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); var ipaddress = words.Last(); Logger.LogProcess("IP specified in squid proxy page: "+ipaddress); var ipListNode = ipNode.SelectSingleNode("//textarea[@name='authips']"); if (ipListNode == null) return; var ipList = ipListNode.InnerText; var ips = ipList.Split(new[] { "\n" }, StringSplitOptions.RemoveEmptyEntries); if (ips.Contains(ipaddress)) return; var thirdPttRequest = pttRequestFactory.SimpleRequest("http://vip.squidproxies.com/index.php?action=addauthip"); thirdPttRequest.WrappedRequest.Host = "vip.squidproxies.com"; thirdPttRequest.WrappedRequest.Referer = "http://vip.squidproxies.com/index.php?action=addauthip"; secondPttRequest.CopySession(thirdPttRequest); pttResponse.GetResponse(thirdPttRequest); Thread.Sleep(60000); } catch (Exception exception) { Logger.LogExceptions(exception); } }