Exemple #1
0
 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));
 }
Exemple #4
0
        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();
            }
        }
Exemple #5
0
 public IEnumerable<IPttRequest> QueryRequest(string serializedRequests)
 {
     IPttRequestFactory requestFactory = new PttRequestFactory(Name, KeepAliveDefaultValue);
     return requestFactory.DeserializeList(serializedRequests, _lastRequest, FillSessionJar);
 }
Exemple #6
0
        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);
            }
        }