Xpoint
   [напомнить пароль]

Как получить текстовый файл с удаленного сервера?

Метки: [без меток]
2013-10-12 18:08:41 [обр] Легеров Алексей[досье]

Вопрос в заголовке шире конкретной проблемы. Есть сервер одного хостера, который по заявлению поддержки "с наших серверов допускаются исходящие соединения только на TCP порт 80". Пытаюсь получить с него текст, генерируемый скриптом, используя LWP::Simple или LWP::UserAgent, - безрезультатно. В тонкой настройке UserAgent, к сожалению, не искушен. Есть ли возможность настроить UserAgent так чтобы соответствовать ограничениям сервера, т.е. сымитировать TCP и порт 80?

Если LWP в данном случае бессилен, если ли возможность выгрузить с сервера текст по URL?

спустя 35 минут [обр] Евгений Седов aka KPbIC(9/187)[досье]
сообщение промодерировано
По дефолту LWP и так использует TCP 80.
спустя 7 часов [обр] Jared(0/26)[досье]

Легеров Алексей[досье] ничего не понятно. Ограничения хостера говорят что ваши скрипты на сервере хостера могут скачивать из интернетов что-то только при соединении на 80 порт. Это никак не пересекается с тем, что вы пытаетесь скачать что-то с этого сервера, с его точки зрения это входящее соединение.

Предположу, что вы пытаетесь скачивать скриптами на этом сервере. Как указал Евгений Седов aka KPbIC[досье], LWP по-умолчанию использует 80 порт. Давайте минимальный проблемный код.

спустя 7 часов [обр] Легеров Алексей[досье]

Я после ответа Евгений Седов aka KPbIC[досье] тоже ничего не понимаю. Значит хостер лукавит. Проблемный код вы знаете. Это обычный

#!/usr/bin/perl
#geturltest.cgi

use strict;
use Fcntl;
use CGI       qw (:standard);
use CGI::Carp qw (fatalsToBrowser);
use LWP::Simple;


print "Content-Type: text/html\n\n";

my $file=get('http://www.4x4sport.ru');
print $file;

ну или чуть сложнее с помощью LWP::UserAgent. Дело не в коде, а в сервере/хостере. Этот код отдает страницу любого адреса в get(), кроме страниц моего сайта (в коде). Единственное что на это ответили в поддержке - мы вас обучать тут не посажены и "непосредственно с наших серверов допускаются исходящие соединения только на TCP порт 80".

Задача, конечно, не получить копию главной страницы, я XML с сайта скриптом получить не могу.

спустя 1 час 50 минут [обр] Jared(0/26)[досье]
Легеров Алексей[досье], так ваш код работает или нет? А если нет, то что отдает?
спустя 8 часов [обр] Легеров Алексей[досье]
Jared[досье], приведенный код работает с любыми другими сайтами, кроме того, что в примере. Загрузить таким кодом текст с 4x4sport.ru почему-то не могу. Хотелось бы помощи узнать почему такое может быть (я полагаю есть какие-то ограничения/настройки на стороне сервера, какие?). И помощи в получении XML кода с данного сервера средствами Perl-скрипта.
спустя 13 минут [обр] Легеров Алексей[досье]
сообщение промодерировано

Jared[досье], включение в код строки die:

my $file=get('http://www.4x4sport.ru');
die "Couldn't get it!" unless defined $file;
print $file;

дает

Couldn't get it! at /home/.../cgi-bin/geturltest.cgi line 16.

указывая на строку с get();
Без die код просто ничего не отдает на данном URL,
с любыми другими сайтами, скрипт просто выводит копию страницы URL

спустя 6 часов [обр] Евгений Седов aka KPbIC(9/187)[досье]
сообщение промодерировано
SSH доступ на машину хостера есть? Сайт "4x4" находится на другой машине?
спустя 7 часов [обр] Легеров Алексей[досье]
Евгений Седов aka KPbIC[досье], к сожалению только FTP
спустя 2 часа 44 минуты [обр] Легеров Алексей[досье]
Требуемого результата добился кодом
#!/usr/bin/perl
#geturltest.cgi

require LWP::UserAgent;

use strict;
use Fcntl;
use CGI       qw (:standard);
use CGI::Carp qw (fatalsToBrowser);

print "Content-Type: text/html\n\n";

my $url = "http://www.4x4sport.ru";
my $res = LWP::UserAgent->new->request(new HTTP::Request GET => $url);
my $list=$res->content;
print $list;
Powered by POEM™ Engine Copyright © 2002-2005