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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> может кто подскажет 
:(
    Опции темы
DooZ
Дата 25.11.2005, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



суть в следующем
у меня есть 1000 ссылок которые надо проверить на какие-то данные (какие щас это не важно)
все это дело надо проверить через прокси!

вопрос
как отделить ошибку самого сайта от ошибки прокси?
т.е. если не пашет прокся одно дело
если не пашет сайт другое

(проверять сайт по каким то параметрам типа текст какой-то, не подходит т.к. все сайты совершенно разные)

просто если работаешь через LWP он выдает допустим ошибку 404 или 500
и хер его знает чья это ошибка прокси или сервака (страницы что я проверяю)

как быть?

может есть вариант в Socet, IO::Socket ?

желательно примеры


заранее благодарю
PM MAIL   Вверх
Aleksandor
Дата 25.11.2005, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


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

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



Надо бы RFC посмотреть, но навскидку могу сказать что прокси не должен сам давать коды ответов HTTP. На то он и прокся что может лишь добавлять от себя некоторые заголовки, но не более того...


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
Kiber_rat
Дата 26.11.2005, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: 7
Всего: 9



Вот тебе для справки коды ответов HTTP:
200 OK
201 Успешная команда POST
202 Запрос принят
203 Запрос GET или HEAD выполнен
204 Запрос выполнен но нет содержимого
300 Ресурс обнаружен в нескольких местах
301 Ресурс удален навсегда
302 Ресурс отсутствует временно
304 Ресурс был изменен
400 Плохой запрос от клиента
401 Неавторизованый запрос
402 Необходима оплата за ресурс
403 Доступ Запрещен
404 Ресурс не найден
405 Метод не применим для данного ресурса
406 Недопустимый тип ресурса
410 Ресурс Недоступен
500 Внутренняя ошибка сервера
501 Метод не выполнен
502 Неисправный шлюз либо перегруз сервера
503 Сервер недоступен/тайм-аут шлюза
504 Вторичный шлюз/тайм-аут сервера


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
sharq
Дата 27.11.2005, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



DooZ

Ответ можно получить с помощью метода status_line, в котором будет указан код ошибки и краткое пояснение ошибки, в том числе ошибка прокси (например, 500 Invalid argument proxy).

perldoc LWP::UserAgent
perldoc HTTP::Request
perldoc HTTP::Response


smile



--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
DooZ
Дата 30.11.2005, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

вариант походу один (посоветовали добрые люди)
проверять мелкую страницу на наличие строки например (100% существующую страницу) перед каждым коннектом...

=)
PM MAIL   Вверх
sharq
Дата 30.11.2005, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



DooZ вот смотри:

Код

use strict;
use LWP::UserAgent;

sub get_page($) {
 my $url = shift;

 my $PROXY = '...'; # ссылка на массив с прокси-серверами
 while (@$PROXY) {
    my $agent = LWP::UserAgent->new(
        'agent' => '...', # UserAgent
        'cookie_jar' => {},
        'timeout' => 15,
    );
    my $proxy = splice @$PROXY, rand @$PROXY, 1;
    warn "$proxy\n";
    $agent->proxy('http', "http://$proxy/") if $proxy;
        
    my $request = $agent->get($url);
    if ($request->is_success && (my $result = $request->content()) =~ m{</html>}i) {
        warn "Get page\n";
        return $result;
    } else {
        warn "Can't get page: ".$request->status_line."\n";
    }
 }
 return;
}

Это функция получения страницы по указанному url, использующая список прокси.
Если страница не получена, то указывается причина, т.е. статус - номер ошибки и короткое сообщение.

Вот лог работы скрипта:
Код

...
Can't get page: 500 Can't connect to 68.2.130.126:7212 (connect: timeout)
Can't get page: 500 Can't connect to 222.89.166.205:3128 (connect: Invalid argument)
Can't get page: 500 Server closed connection without sending any data back
Get page
...


Как видишь, это все ошибки прокси, которых отверг url. smile
В данном случае не было ошибок сайта, т.к. url - валидный.
Но status_line показывает все ошибки, возникшие при получение страницы, например,
Код

Can't get page: 302 Page removed


smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
DooZ
Дата 1.12.2005, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ага проходили такое
бывают такие прокси которые пишут
Your IP address is not recognized
CoDeeN CDN Network
типа того
и никакой ошибки... но сайт (страница) не получается...
делайте выводы
PM MAIL   Вверх
sharq
Дата 1.12.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



DooZ
Цитата(DooZ @ 1.12.2005, 03:41)
бывают такие прокси которые пишут
Your IP address is not recognized

так это проблема прокси, а не кода.



--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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