1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58:
| var HTTP : TIdHTTP; Cookie : TIdCookieManager; SSL : TIdSSLIOHandlerSocketOpenSSL; Params : TStringList; HTMLSource : String; CurrentProxy : String; ProxyPort : Integer; ProxyHost : String; ProxyUsername : String; ProxyPW : String; begin Synchronize(AddItem); HTTP := TIdHTTP.Create(NIL); Cookie := TIdCookieManager.Create(HTTP); SSL := TIdSSLIOHandlerSocketOpenSSL.Create(HTTP); HTTP.CookieManager := Cookie; HTTP.IOHandler := SSL; HTTP.HandleRedirects := True; Params := TStringList.Create; HTTP.Request.UserAgent := Task^.Useragent; try while True do begin if terminated then Exit; Params.Clear; Cookie.CookieCollection.Clear; if Task^.Proxytype >= 0 then begin CurrentProxy := Task^.Form.GetProxyFromPool; ProxyHost := ParsingW(':', CurrentProxy, 1); ProxyPort := strtoint(ParsingW(':', CurrentProxy, 2)); HTTP.ConnectTimeout := (Task^.Proxytimeout * 1000); if Task^.ProxyAuth then begin ProxyUsername := ParsingW(':', CurrentProxy, 3); ProxyPW := ParsingW(':', CurrentProxy, 4); end; end; if Task^.Proxytype = 0 then begin HTTP.ProxyParams.ProxyServer := ProxyHost; HTTP.ProxyParams.ProxyPort := ProxyPort; if Task^.ProxyAuth then begin HTTP.ProxyParams.ProxyUsername := ProxyUsername; HTTP.ProxyParams.ProxyPassword := ProxyPW; end; end; if (Task^.Proxytype = 1) or (Task^.Proxytype = 2) then begin SSL.TransparentProxy := TIdSocksInfo.Create(HTTP); (SSL.TransparentProxy as TIdSocksInfo).Port := ProxyPort; (SSL.TransparentProxy as TIdSocksInfo).Host := ProxyHost; if Task^.ProxyAuth then begin (SSL.TransparentProxy as TIdSocksInfo).Username := ProxyUsername; (SSL.TransparentProxy as TIdSocksInfo).Password := ProxyPW; (SSL.TransparentProxy as TIdSocksInfo).Authentication := saUsernamePassword; end else begin (SSL.TransparentProxy as TIdSocksInfo).Authentication := saNoAuthentication; end; if (Task^.Proxytype = 1) then (SSL.TransparentProxy as TIdSocksInfo).Version := svSocks4; if (Task^.Proxytype = 2) then (SSL.TransparentProxy as TIdSocksInfo).Version := svSocks5; end; |