Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибки прокси в LWP 
:(
    Опции темы
DooZ
Дата 8.1.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



тема уже поднималась, но толком ответа дано не было
может быть я не очень подробно объяснил ситуацию, сейчас постараюсь это исправить

вообщем задача узнать ошибка была выдана проксей или сервером?

суть проблемы
есть некий скрипт работающий через LWP качающий файлы, работает он через прокси
все бы хорошо, если бы все прокси выдавали СТАНДАРТНЫЕ ответы ошибок типа:
Can't connect to ...
504 Proxy Timeout
Server closed connection without sending any data back

НО позникает проблема когда прокси возвращают не стандартные ответы типа:
This is an evaluation version limited to use of
You are trying to use a node of the CoDeeN CDN Network
Request not authorized to access WAP Gateway
и т.д.

таких ответов может быть сотни и более
проверять прокси перед запросом пробывал
бывает ситуация, что при проверке она работает (проверяю на своем скрипте выдающим ответы), а через секунду уже при непосредственно нужном мне запросе прокся уже не пашет (выдает не стандартный ответ)

проверять какое-то слово на сайте куда я делаю запрос, тоже нельзя т.к. сайты разные и я не знаю что там будет

проверять размер сайта или контент сайта (без прокси) потом делать к нему же запрос с проксей тоже нельзя т.к. сайт может измениться и проверка не пройдет

через сокеты работать тоже не катит
во первых не хочу заморачиваться, во вторый при коннекте сначала к проксе она тоже работает все ок, при создании запроса к сайту вылазиет таже ошибка (не стандартная)

вот собственно и вся проблема

есть идеи как быть?
PM MAIL   Вверх
Nab
Дата 8.1.2007, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 26
Всего: 37



Есть идеи smile
Проверять  заголовок ответа HTTP а не пояснительный текст на странице...


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
DooZ
Дата 8.1.2007, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



пример в студию
PM MAIL   Вверх
Nab
Дата 9.1.2007, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 26
Всего: 37



Моя практика мне показала вот такие данные:
В прокси, если настроен абсолютно прозрачно не отличить ошибку сервера от ошибки прокси smile
Другое дело что как правило, это ошибки разные....
Поэтому предлагаю вот такой вариант:
При возникновении ошибки, проверить прокси простым запросом на заведомо рабочем сайте. Это может быть как внешний сервис, так и свой собственный.

Я писал как-то свой проксичекер, там идет проверка на доступность и анонимность проксисерверов, и схема там такая:
мы вызываем себя без прокси всяких, как контрольный вызов, а потом проганяем с разными проксями, и сравниваем заголовки...
Это все видно в логе...
Код

# проверка на то что нас вызвали не локально, а из CGI окружения
# мы возвращаем различные заголовки, и выводим простую страницу со словом OK.
if (defined($ENV{'REQUEST_METHOD'})) {
    print "Content-type: text/plain\n";
    foreach (@headers) { print "$_: $ENV{$_}\n" }
    foreach (@proxy_headers) { print "$_: $ENV{$_}\n" }
    print "\n";
    print "Ok\n";
    exit
}
# А дальше код реального проксичекера
# который и анализирует эти заголовки.

Вот пример совсем недавнего лога, и посмотрите какого типа ошибки там обычно присутствуют...
Код

[ Tue Jan  9 03:00:38 2007 ] --- Begin get proxyes ---
[ Tue Jan  9 03:00:58 2007 ] --- Get proxy lists is complete. 1024 proxyes ---
[ Tue Jan  9 03:00:58 2007 ] --- Get the original response from http://xxx***xxx/cgi-bin/proxy_check.pl
[ Tue Jan  9 03:00:59 2007 ]    original response is ok. Self IP is xxx***xxx
[ Tue Jan  9 03:00:59 2007 ] --- Begin check proxyes ---
[ Tue Jan  9 03:01:02 2007 ] 1: 500 read timeout
[ Tue Jan  9 03:01:05 2007 ] 2: 500 Can't connect to 203.198.69.115:3128 (connect: timeout)
[ Tue Jan  9 03:01:08 2007 ] 3: 500 read timeout
[ Tue Jan  9 03:01:09 2007 ] 4: 200.38.131.23:80 is not anonymous
[ Tue Jan  9 03:01:12 2007 ] 5: 500 Can't connect to 61.135.158.53:80 (connect: timeout)
[ Tue Jan  9 03:01:12 2007 ] 6: 500 Can't connect to 210.212.248.100:3128 (connect: Connection refused)
[ Tue Jan  9 03:01:15 2007 ] 7: 500 Can't connect to 82.137.247.67:80 (connect: timeout)
[ Tue Jan  9 03:01:20 2007 ] 8: 500 read timeout
[ Tue Jan  9 03:01:21 2007 ] 9: 202.153.34.193:3128 is not anonymous
[ Tue Jan  9 03:01:24 2007 ] 10: 61.19.156.51:8080 is not anonymous
[ Tue Jan  9 03:01:27 2007 ] 11: 500 Can't connect to 200.172.88.34:6588 (connect: timeout)
[ Tue Jan  9 03:01:28 2007 ] 12: 140.109.17.180:3128 is GOOD
[ Tue Jan  9 03:01:28 2007 ] 13: 500 Can't connect to 61.25.146.222:8080 (connect: Connection refused)
[ Tue Jan  9 03:01:30 2007 ] 14: 500 Can't connect to 202.148.31.242:8080 (connect: Connection refused)
[ Tue Jan  9 03:01:33 2007 ] 15: 500 Can't connect to 64.34.173.105:8888 (connect: timeout)
[ Tue Jan  9 03:01:36 2007 ] 16: 500 Can't connect to 221.170.180.231:8080 (connect: timeout)
[ Tue Jan  9 03:01:39 2007 ] 17: 500 Can't connect to 82.137.247.42:80 (connect: timeout)
[ Tue Jan  9 03:01:42 2007 ] 18: 500 Can't connect to 219.38.164.28:8080 (connect: timeout)
[ Tue Jan  9 03:01:42 2007 ] 19: 169.229.50.10:3128 is GOOD
[ Tue Jan  9 03:01:45 2007 ] 20: 500 Can't connect to 211.24.161.18:80 (connect: timeout)
[ Tue Jan  9 03:01:48 2007 ] 21: 500 Can't connect to 59.125.39.5:16519 (connect: timeout)
[ Tue Jan  9 03:01:51 2007 ] 22: 500 Can't connect to 200.55.212.147:8080 (connect: timeout)
[ Tue Jan  9 03:01:52 2007 ] 23: 194.29.178.6:3127 is GOOD
[ Tue Jan  9 03:01:55 2007 ] 24: 500 read timeout
[ Tue Jan  9 03:02:00 2007 ] 25: 500 read timeout
[ Tue Jan  9 03:02:05 2007 ] 26: 500 read timeout
[ Tue Jan  9 03:02:08 2007 ] 27: 500 Can't connect to 196.25.192.190:80 (connect: timeout)
[ Tue Jan  9 03:02:11 2007 ] 28: 500 Can't connect to 203.130.225.34:3128 (connect: timeout)
[ Tue Jan  9 03:02:14 2007 ] 29: 500 Can't connect to 62.36.0.130:80 (connect: timeout)
[ Tue Jan  9 03:02:15 2007 ] 30: 82.194.61.221:80 is not anonymous
[ Tue Jan  9 03:02:18 2007 ] 31: 500 Can't connect to 85.9.71.149:8080 (connect: timeout)
[ Tue Jan  9 03:02:21 2007 ] 32: 500 Can't connect to 83.149.151.58:8080 (connect: timeout)
[ Tue Jan  9 03:02:24 2007 ] 33: 500 Can't connect to 165.229.203.100:8000 (connect: timeout)
[ Tue Jan  9 03:02:27 2007 ] 34: 500 Can't connect to 58.87.223.227:8080 (connect: timeout)
[ Tue Jan  9 03:02:27 2007 ] 35: 403 Forbidden
[ Tue Jan  9 03:02:30 2007 ] 36: 500 Can't connect to 210.18.64.9:8080 (connect: timeout)
[ Tue Jan  9 03:02:35 2007 ] 37: 403 Forbidden
[ Tue Jan  9 03:02:38 2007 ] 38: 500 read timeout
[ Tue Jan  9 03:02:41 2007 ] 39: 500 Can't connect to 201.80.182.57:6588 (connect: Connection refused)
[ Tue Jan  9 03:02:45 2007 ] 40: 500 read timeout
[ Tue Jan  9 03:02:49 2007 ] 41: 500 read timeout
[ Tue Jan  9 03:02:52 2007 ] 42: 500 Can't connect to 69.17.96.248:8000 (connect: timeout)
[ Tue Jan  9 03:02:55 2007 ] 43: 500 read timeout
[ Tue Jan  9 03:02:58 2007 ] 44: 500 Can't connect to 200.2.129.117:80 (connect: timeout)
[ Tue Jan  9 03:03:01 2007 ] 45: 500 Can't connect to 82.137.247.108:80 (connect: timeout)
[ Tue Jan  9 03:03:02 2007 ] 46: 500 Server closed connection without sending any data back
[ Tue Jan  9 03:03:05 2007 ] 47: 500 Can't connect to 200.144.124.2:3128 (connect: timeout)
[ Tue Jan  9 03:03:08 2007 ] 48: 500 Can't connect to 82.137.247.167:80 (connect: timeout)
[ Tue Jan  9 03:03:11 2007 ] 49: 500 read timeout
[ Tue Jan  9 03:03:14 2007 ] 50: 500 Can't connect to 68.82.200.252:8080 (connect: timeout)
[ Tue Jan  9 03:17:08 2007 ] 400: 82.137.247.48:80 is not anonymous
[ Tue Jan  9 03:17:10 2007 ] 401: 148.233.229.236:80 is not anonymous
[ Tue Jan  9 03:17:13 2007 ] 402: 500 Can't connect to 222.66.127.150:80 (connect: timeout)
[ Tue Jan  9 03:17:16 2007 ] 403: 500 Can't connect to 202.143.150.142:8080 (connect: timeout)
[ Tue Jan  9 03:17:17 2007 ] 404: 208.216.119.19:3127 is GOOD
[ Tue Jan  9 03:17:20 2007 ] 405: 500 read timeout
[ Tue Jan  9 03:18:10 2007 ] 423: 500 Can't connect to 170.92.64.37:80 (connect: timeout)
[ Tue Jan  9 03:18:11 2007 ] 424: 212.138.64.145:80 is not anonymous
[ Tue Jan  9 03:18:14 2007 ] 425: 500 Can't connect to 61.152.154.19:80 (connect: timeout)
[ Tue Jan  9 03:18:17 2007 ] 426: 500 Can't connect to 200.107.42.104:6588 (connect: timeout)
[ Tue Jan  9 03:18:19 2007 ] 427: 82.137.247.137:80 is not anonymous
[ Tue Jan  9 03:18:22 2007 ] 428: 500 Can't connect to 200.107.37.138:3128 (connect: timeout)
[ Tue Jan  9 03:18:23 2007 ] 429: 61.91.191.9:80 is not anonymous
[ Tue Jan  9 03:18:27 2007 ] 430: 500 read timeout
[ Tue Jan  9 03:19:06 2007 ] 447: 400 Proxy Error: Host name "********" not recognized or host not found - URL "http://********/cgi-bin/proxy_check.pl".
[ Tue Jan  9 03:28:41 2007 ] --- Checked complete ---
[ Tue Jan  9 03:28:41 2007 ] --- Scanned 691 from 1024 proxyes, found 44 good proxy --- 

Лог большой пришлось обрезать
а вот полный лог, правда этот отработал чуть позже...

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  proxy_error.prev.log 49,38 Kb


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
DooZ
Дата 9.1.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



сенькс за ответ
но насчет дополнительной проверки я писал, что есть прокси который при проверке работают, а через секунду уже нет

вообщем все сводится к тому что нужно вылавливать эти самые не стандартные ответы и просто по ним определять ошибку прокси
PM MAIL   Вверх
Nab
Дата 9.1.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 26
Всего: 37



Цитата(DooZ @  9.1.2007,  13:29 Найти цитируемый пост)
но насчет дополнительной проверки я писал, что есть прокси который при проверке работают, а через секунду уже нет

Все верно, поэтому у меня список рабочих прокси и чекается постоянно, практически без перерыва...
Цитата(DooZ @  9.1.2007,  13:29 Найти цитируемый пост)
вообщем все сводится к тому что нужно вылавливать эти самые не стандартные ответы и просто по ним определять ошибку прокси

Но я предложил чекать прокси, для того чтобы определить его работоспособность, ПОСЛЕ неудачного соединения.
А вообще для этого существует таймаут, и при ошибке, я бы рекомендовал попробовать еще раз переконнектиться, через пару секунд.... Количество попыток выберете сами експериментально, и уж если коннект пропал, то тогда проверяйте нерабочий прокси....
А лучше как я сделал.... Иметь не один прокси smile и пробовать по кругу, если несколько проксей валятся с той же ошибкой, то вероятно ошибка сервера а не прокси...


Просто главный смысл в том, чтоб не гонять объем контента по сети, а для минимизации делать запрос не GET, а HEAD.
Поэтому я и говорил про заголовки, а не про контент, который действительно может быть любым, по усмотрению админа прокси или ресурса...


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
DooZ
Дата 10.1.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



оки сенькс за помощь =)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.