Мой вопрос: почему мой скрипт 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;