Не удается подключиться к ... имя узла или имя сервера не предоставлены или не известны - PullRequest
0 голосов
/ 06 февраля 2020

Мой вопрос: почему мой скрипт perl - успешный через домашний ноутбук - не работает при запуске в контексте моего хостинг-сайта? (Возможно, у них есть брандмауэр, например. Возможно, мой веб-сайт должен предоставить учетные данные. Возможно, это относится к межсайтовому скриптингу. Я НЕ ЗНАЮ и прошу вашей помощи в моем понимании, что может быть причиной, а затем спасибо!)

Обратите внимание, что все работает нормально, если я запускаю скрипт perl на своем ноутбуке дома.

Но если я загружаю скрипт perl на свой веб-хостинг где у меня есть веб-страница, чья javascript успешно вызывает этот сценарий perl, произошла ошибка на сайте, URL-адрес которого содержится в сценарии perl (finance.yahoo в этом примере).

Чтобы обойти javascript, я просто набираю URL моего perl скрипта, например, http://example.com/blah/script.pl

Вот полное сообщение об ошибке из finance.yahoo когда $ url начинается с http:

Can't connect to finance.yahoo.com:80 nodename nor servname provided, or not known at C:/Perl/lib/LWP/Protocol/http.pm line 47.

Вот полное сообщение об ошибке от finance.yahoo, когда $ url начинается с https:

Can't connect to finance.yahoo.com:443 nodename nor servname provided, or not known at C:/Perl/lib/LWP/Protocol/http.pm line 47.

Код:

#!/usr/bin/perl
use strict; use warnings;
use LWP 6; # one site suggested loading this "for all important LWP classes"

use HTTP::Request;

### sample of interest: to scrape historical data and feed massaged facts to my private web page via js ajax
my $url = 'http://finance.yahoo.com/quote/sbux/profile?ltr=1';

my $browser = LWP::UserAgent->new;

# one site suggested having this empty cookie jar could help
$browser->cookie_jar({});

# another site suggested I should provide WAGuess
my @ns_headers = (
 'User-Agent' => 
        # 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
 'Accept' => 'text/html, */*',
 'Accept-Charset' => 'iso-8859-1,*,utf-8',
 'Accept-Language' => 'en-US',
);

my $response = $browser->get($url, @ns_headers);

# for now, I just want to confirm, in my web page itself, that 
# the target web page's contents was returned
my $content = $response->content;

# show such content in my web page
print "Content-type: text/html\n\n" . $content;

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Ну, неясно, какова ваша конечная цель, и, возможно, вы слишком усложняете задачу.

Вы можете найти вышеупомянутую страницу с более простым perl кодом

#!/usr/bin/env perl
#
# vim: ai:ts=4:sw=4
#

use strict;
use warnings;
use feature 'say';

use HTTP::Tiny;

my $debug = 1;

my $url = 'https://finance.yahoo.com/quote/sbux/profile?ltr=1';

my $responce = HTTP::Tiny->new->get($url);

if ($responce->{success}) {
    my $html = $responce->{content};

    say $html if $debug;
}

В своем посте вы указали, что javascript каким-то образом участвует - неясно, как и для чего он предназначен при извлечении страницы.

Сообщение об ошибке имеет ссылку на at C: / Perl / lib / LWP / Protocol / http.pm строка 47 , которая указывает, что веб-хостинг осуществляется на машине Windows - было бы неплохо указать это в своем сообщении.

Не могли бы вы пролить свет на цель следующего блока в вашем коде?

# WAGuess
$browser->env_proxy;
# WAGuess
$browser->cookie_jar({});

Я не вижу, чтобы cookie_jar использовался в вашем коде где-либо.

Планируете ли вы использовать какой-либо подход аутентификации для извлечения некоторых данных из вашей личной учетной записи, которая недоступна в противном случае?

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

0 голосов
/ 22 февраля 2020

Возможно, речь идет о cookie-файлах или об использовании URL-адреса yahoo для запроса.

Не работает URL-адрес Yahoo Finance

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...