Indy и ошибки при перепроверке прокси. Ребят, тут такое дело. При проверке прокси (проверяется присвоеное прокси потоку перед авторизацией) из http://awmproxy.com (с другими вроде всё норм), прокси проверяются в начале нормально, а потом лезут ошибки. Типо "не правильный запрос", "сервер не отвечает". Хотя список прокси обновляется время от времени. Но чем дальше, тем проверяются хуже. Code: function TSpamThread.check_proxy(l:boolean=False):boolean; var mess,err_mess: string; i: Integer; label g; begin {Проверка прокси} if Length(FProxyHost)>0 then begin g: if (stop=True) or (FContinue=True) then exit; if (i>=1) or (l=True) then Log('Проверяем прокси: '+FProxyHost); {} try mess := FH.Get('http://vkontakte.ru'); except on e:EIdException do err_mess := E.Message; end; {} if (Pos('a_login_attempt',mess)>0) or (Pos('<form action="javascript:iphoneSearch();',mess)>0) or (Pos('<form method="post" name="login" id="login"',mess)>0) or (Pos('<div id="myLink">',mess)>0) then begin Result := True; if (i>=1) or (l=True) then Log('Используем прокси: '+FProxyHost); if (i>=1) and (l=False) and (autorization(FLogin,FPass,False)=false) then FContinue:=True; end else begin if Pos('Read timed out',err_mess)>0 then Log(FProxyHost+': слишком медленная прокси, меняем её!') else Log(FProxyHost+': прокси сдохла, меняем её!'); if i<=main_f.m_proxy.Lines.Count-1 then begin if FH.Connected=True then try FH.Disconnect; except end; {} Synchronize(ch_proxy); {} if FProxyTag=0 then begin FH.ProxyParams.Clear; FH.ProxyParams.ProxyServer := FProxyHost; if FProxyPort>0 then FH.ProxyParams.ProxyPort := FProxyPort else Log('Ошибка: Нет порта прокси!'); FH.ProxyParams.ProxyUsername := FProxyLogin; FH.ProxyParams.ProxyPassword := FProxyPass; end; if (FProxyTag=1) or (FProxyTag=2) then begin if Length(FProxyLogin)>1 then SI.Authentication := saUsernamePassword else SI.Authentication := sanoAuthentication; {} SI.Host := FProxyHost; if FProxyPort>0 then SI.Port := FProxyPort else Log('Ошибка: Нет порта прокси!'); SI.Username := FProxyLogin; SI.Password := FProxyPass; end; i := i+1; goto g; end else begin if FNoProxySend=True then begin Log('Нет ни одной нормальной прокси,-работаем без неё.'); {} if FH.Connected=True then try FH.Disconnect; except end; {} FProxyHost :=''; FProxyPort := 0; FProxyLogin := ''; FProxyPass := ''; if FProxyTag=0 then begin FH.ProxyParams.Clear; FH.ProxyParams.ProxyServer := ''; FH.ProxyParams.ProxyPort := 0; FH.ProxyParams.ProxyUsername := ''; FH.ProxyParams.ProxyPassword := ''; end; if (FProxyTag=1) or (FProxyTag=2) then begin SI.Host := ''; SI.Port := 0; SI.Username := ''; SI.Password := ''; end; if (i>=1) and (l=False) and (autorization(FLogin,FPass,False)=false) then FContinue:=True; end else begin Log('Нет ни одной нормальной прокси,-прерываем работу.'); FContinue := True; end; end; end; end; end; Мож кто знает с чем это связано может быть? Заранее спасибо за помощь.
Учить матчасть: что такое исключение, и почему исключение != ошибка, как обрабатывать исключения, как настраивать среду разработки для игнорирования таких типов исключений, в конце концов узнать наконец разницу между запуском из-под отладчика и обычным PS Какой здесь вопрос и какой будет мой ответ понял уже увидев название темы. Вам что млять, всем книги читать западло?
GhostOnline, причем здесь вообще то что ты написал? Я вообщето спросил почему в данном конкретно случае Инди вначале нормально принимает прокси, а после при переборе списка прокси дает ошибки сервера. Хотя не могут же все поголовно прокси быть дохлыми хразу после 2го круга проверки. Может это какиет ограничения awmproxy?Мож нужно както по особому менять/очищать прокси/соксы? Я конкретно это не могу понять.
а вот при этом: Про то что ошибки ошибки начинают лезть именно на втором проходе а первый нормально отрабатывает ты не написал. А мне что думать? Вот я и применил к тебе стеретип новичка путающего ошибки с исключениями. практически постоянно работаю именно с awmproxy, сначала на инди а щас на ICS, с обновлением списка - такой мистики не обнаружено. Ограничения могут быть на количество потоков, но тут не похоже на это idhttp глобальный? на форме? или где? можно попробовать пересоздавать
idHTTP и остальные компоненты создаются в каждом потоке отдельно (только CookieManager общий). Получается примерно такая ситуёвина: Список обновляется, берётся прокси и проверяется, работает нормально. Так прокси 20, потом понемногу начинают появляться ошибки. Потом список обновляется снова (так как обновление по таймеру). После этого нормальными проходят только 50% прокси из списка. А на 3е обновление уже только 10% прокси могут получить страничку.
Если честно то не вижу конкретного смысла выводит в один поток и там проверять. По сути я и так нормально проверить могу. Так собственно и делаю, просто все ошибки в лог вывожу из потока да и всё. Но ошибки только серверные вылазят, никаких AV и подобного. Вот и спрашиваю, может как-то "тонко" нужно чистить SocksInfo или SSLHandler? Куки я думаю явно роли не играют ни какой.