@ogurchiki said in Смена прокси:
@xclsv попытался сделать через вызов функции, выдает такую ошибку (в логе):
//[14:22:19] Поток №1 : ReferenceError: Can't find variable: change_proxy Номер строки:3 Во время выполнения скрипта { _call(change_proxy,null,function(){ _next_or_section(1,function(){ })})}
Я все правильно делаю? Эту функцию надо в начале скрипта писать? или как-то вызывать?
Как верно написал выше Fox, все функции, кроме OnApplicationStart пишутся вручную. Ошибка в логе как раз и говорит о том, что функцию change_proxy в программе никто не объявлял и не описывал. Чтобы все заработало, необходимо создать функцию с таким названием, вставить в нее блоки вроде тех, что в моем первом ответе в топике и вызвать в том месте программы, где необходимо определить или сменить прокси. Крайне рекомендую почитать о том, что такое рекурсия. Это решит ещё 100500 проблем в будущем.
1.Создал новую функцию (OnApplicationStart)
2. 
Функция change_proxy это уже готовая функция? или её нужно самому создать?
Да, в каких-то случаях такое можно использовать в OnApplicationStart. Но что тогда делать, если прокси слетит во время работы скрипта или нужно будет использовать прокси в многопотоке? В общем, от использования OnApplicationStart рекомендую отказаться и сделать как я описал Выше.
Ошибка на твоем скриншоте также в том, что ты дважды на одной итерации запрещаешь повторно использовать строку ресурса. Тоесть у тебя программа использует первый прокси, выведет в лог уже второй. А если прокси окажется плохим, то использует третий, а второй просто выведет в лог и пропустит. Не следует запрещать использовать строку ресурса повторно в блоке Http клиент прокси
Какая структура получается?
Http клиент берет прокси;
Отправляет get-Запрос на яндекс;
Сохраняет статус ответа;
Потом если статус ответа 200, то сохраняет в переменную WAS_EROR ( это что за переменная**?**) (непонятно)
И вызывает функцию change_proxy ? (непонятно)
А если нормально все(статус ответа не 200) - то он должен продолжать дальше цикл?
Сорри за глупые вопросы)
WAS_ERROR - это переменная, которая автоматически объявляется при использовании в скрипте блока Игнорировать ошибки. Если этот блок не использовать, то в твоем случае, если прокси окажется мертвым, программа вылетит с ошибкой. А при его использовании работа будет продолжаться. Сразу после отработки этого блока в переменную WAS_ERROR запишется 1, если ошибка была или 0, если ошибки не было.
Структура примерно такая:
- В нужном месте программы вызывается вышеописанная функция смены прокси.
- Из ресурса берется и устанавливается прокси.
- Отправляется get-Запрос. Лучше не на Яндекс, а сразу на Ваш сайт. Ведь в Яндексе прокси может быть заблочен, а на Вашем сайте нет.
- Сохраняем статус ответа сервера (или, лучше, сохраняем сам ответ сервера и читаем содержимое тега title на нужном нам сайте).
- Если ответ сервера не 200 или была ошибка во время использования блока Игнорировать ошибки, то эта функция снова вызывается (да, функция вызывает сама себя. Так можно =)) и все вышеописанное повторяется снова, но уже со следующим прокси. Так будет до тех пор, пока ответ сервера будет 200 и не будет ошибок во время запросов к нужному сайту.