Изучаю Перл, поэтому другие языки не предлагать.
Вот что дает браузер при входе
http://www.the-game.ru/overview/POST /overview/ HTTP/1.1
Host: www.the-game.ru
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.the-game.ru/
Cookie: __utma=167751035.95729135.1381258042.1381418287.1381472011.7; __utmz=167751035.1381258042.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=167751035.1.10.1381472011; __utmc=167751035; SID=9762509YNMSUUNKXBNQWAJBXAMD
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 34
action=login&login=t1est&pwd=t1estВот что на данный момент имею. Пробовал уже сотни вариантов. Помогите пожалуйста.
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
my $login='test11';
my $pass='test11';
my $url="http://www.the-game.ru/overview/";
$ua->agent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0");
use HTTP::Cookies;
$ua->cookie_jar( HTTP::Cookies->new(
'file' => '/some/where/cookies.lwp', #файл обмена
'autosave' => 1, #по завершении, сохранять ли файл
));
# $ua->referer ("www.the-game.ru");
my $req = HTTP::Request->new(POST => $url,[
Host=> 'www.the-game.ru',
User-Agent=> 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0',
Accept=> 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
Accept-Language=> 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
Accept-Encoding=> 'gzip, deflate',
Referer=> 'http://www.the-game.ru/',
pwd=>t1est,
login=>t1est,
#action=>action,
action=> 'login&login=t1est&pwd=t1est',
]);
my $res = $ua->request($req);
$res = $res->as_string;
open FILE, '>ww.xls';
print FILE "$res \n $url";C этической стороны проблем нет. Есть не менее 10-ка человек сделавших то же самое, некоторые есть и в открытом доступе, но там писали профессионалы и разобраться в их коде для меня тяжко.
>[оверквотинг удален]
> Referer=> 'http://www.the-game.ru/',
> pwd=>t1est,
> login=>t1est,
> #action=>action,
> action=> 'login&login=t1est&pwd=t1est',
> ]);
> my $res = $ua->request($req);
> $res = $res->as_string;
> open FILE, '>ww.xls';
> print FILE "$res \n $url";А wget'ом категорически "низя"?
wget -x --output-document=thegameru.html --post-data 'action=login&login=t1est&pwd=t1est' http://www.the-game.ru/overview/
при необходимости добавить
--referer=URL (включить в HTTP-запрос заголовок Referer: URL)
--no-check-certificate (не проверять сертификат)--output-file=logfiledownload (записывать отладку в файл журнала загрузки)
--user-agent=agent-string (прикинуться черным шлангом ))
--no-cookies (отключить куки)
--load-cookies file (загрузить куки из файла)
--save-cookies file (сохранить куки в файл)
--keep-session-cookies (сохранить сессионные куки)
> А wget'ом категорически "низя"?Я же хочу потом и дальше со страничкой работать. Посему очень хочется на Перле, там потом будут готовые скрипты вставляться.
>> А wget'ом категорически "низя"?
> Я же хочу потом и дальше со страничкой работать. Посему очень хочется
> на Перле, там потом будут готовые скрипты вставляться.Не вопрос.
Получаете страницу wget'ом, открываете её в perl'е и потрошите её как вам надо.А если категорически "низя", но очень хочется и надо через perl, то можно и perl.
Есть такой wget для perl, называется curl )))
С ним что угодно можно скачать и залить. Очень мощный инструмент. Различных плюшек и примочек к нему масса.Вам потребуется:
WWW::Curl::Easy и собственно сам curlНе знаю вашу ОС, если FreeBSD, то нужно следующее:
cd /usr/ports/ftp/curl/
make install clean
cd /usr/ports/www/p5-WWW-Curl/
make install clean
rehashЕсли начать установку сразу с p5-WWW-Curl, то она автоматически потянет за собой и curl.
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Curl::Easy;
my $curl = WWW::Curl::Easy->new() or die "curl init failed!\n";
$curl->setopt(CURLOPT_VERBOSE, 1);
$curl->setopt(CURLOPT_FOLLOWLOCATION, 1);
my @headers = (
"User-Agent: Mozilla/5.0",
"Referer: http://www.the-game.ru/",
"Content-Type: application/x-www-form-urlencoded"
);
$curl->setopt(CURLOPT_HTTPHEADER, \@headers);
my $url = "http://www.the-game.ru/overview/";
$curl->setopt(CURLOPT_URL, $url);
my $user = 't1est';
my $pass = 't1est';
$curl->setopt(CURLOPT_POSTFIELDS, "action=login&login=$user&pwd=$pass");
sub body_callback {
my ( $chunk, $context ) = @_;
push @{$context}, $chunk;
return length ( $chunk );
}
$curl->setopt(CURLOPT_WRITEFUNCTION, \&body_callback);
my @body;
$curl->setopt(CURLOPT_FILE, \@body);
if ($curl->perform() != 0) {
print "Failed ::".$curl->errbuf."\n";
};
$curl->cleanup;
print join ( "", @body );
my $filename = "/tmp/thegameru.html";
open FH, ">", $filename;
print FH @body;
close FH;CURLOPT_VERBOSE - выводит дополнительную информацию, записывает вывод в поток STDERR, или файл, указанный параметром CURLOPT_STDERR
CURLOPT_STDERR - альтернативный файл для вывода ошибок, используемый вместо потока ошибок STDERR
CURLOPT_FOLLOWLOCATION - рекурсивно следует за всеми заголовкам "Location: ", отправленным сервером в своем ответе, за исключением случая, когда установлена константа CURLOPT_MAXREDIRS
CURLOPT_MAXREDIRS - максимальное количество принимаемых редиректов, используется вместе с параметром CURLOPT_FOLLOWLOCATION
CURLOPT_HTTPHEADER - массив устанавливаемых HTTP-заголовков
CURLOPT_URL - загружаемый URL
CURLOPT_POSTFIELDS - передаваемые данные('var1=val1&var2=val2&...')/файлы для передачи в HTTP POST-запросе
CURLOPT_WRITEFUNCTION - название callback-функции, принимающей два параметра. Первым параметром является дескриптор cURL, а вторым параметром является строка с записываемыми данными. Данные должны быть сохранены с помощью данной функции. Она должна возвратить точное количество записанных байт, иначе закачка будет прервана с ошибкой.
CURLOPT_FILE - файл, в который будет записан результат передачи
CURLOPT_WRITEDATA – объект, в который производится запись принимаемых данных
Если работаете с cookies, то:
CURLOPT_COOKIE - содержимое заголовка "Cookie: ", используемого в HTTP-запросе, несколько cookies разделяются точкой с запятой с последующим пробелом (например, "fruit=apple; colour=red")
CURLOPT_COOKIEFILE - файл, содержащий cookies, данный файл должен быть в формате Netscape или просто заголовками HTTP, записанными в файл
CURLOPT_COOKIEJAR - файл, в который будут сохранены все внутренние cookies текущей передачи после закрытия дескриптора, например, после вызова curl_close
Спасибо, буду курить.
> Спасибо, буду курить.Все таки хочу решить проблему стандартными библиотеками. Узнал, мне надо определить
Content-Length:
Со всеми остальными данными разобрался. Параллельно пытаюсь сделать то же самое на socket-ах но там проблема, http 1.0 - все ок, http 1.1. - HTTP/1.1 400 Bad Request
>> Спасибо, буду курить.
> Все таки хочу решить проблему стандартными библиотеками. Узнал, мне надо определить
> Content-Length:
> Со всеми остальными данными разобрался. Параллельно пытаюсь сделать то же самое на
> socket-ах но там проблема, http 1.0 - все ок, http
> 1.1. - HTTP/1.1 400 Bad RequestВам надо посчитать Content-Length и запихнуть в массив заголовков и обязательно передать?
Заменитьmy @headers = (
"User-Agent: Mozilla/5.0",
"Referer: http://www.the-game.ru/",
"Content-Type: application/x-www-form-urlencoded"
);
$curl->setopt(CURLOPT_HTTPHEADER, \@headers);my $url = "http://www.the-game.ru/overview/";
$curl->setopt(CURLOPT_URL, $url);my $user = 't1est';
my $pass = 't1est';
$curl->setopt(CURLOPT_POSTFIELDS, "action=login&login=$user&pwd=$pass");на
my $user = 't1est';
my $pass = 't1est';my $post_send = "action=login&login=$user&pwd=$pass";
my $cont_len = length $post_send;
my @headers = (
"User-Agent: Mozilla/5.0",
"Referer: http://www.the-game.ru/",
"Content-Type: application/x-www-form-urlencoded",
"Content-Length: $cont_len"
);
$curl->setopt(CURLOPT_HTTPHEADER, \@headers);my $url = "http://www.the-game.ru/overview/";
$curl->setopt(CURLOPT_URL, $url);$curl->setopt(CURLOPT_POSTFIELDS, "$post_send");
> Вам надо посчитать Content-Length и запихнуть в массив заголовков и обязательно передать?Если уж быть совсем кратко, мне надо передать вот такой запрос,
[pre]POST /overview/ HTTP/1.1
Host: www.the-game.ru
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.the-game.ru/
Cache-Control: max-age=0
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
Content-Type: application/x-www-form-urlencoded
Content-Length: 34
action=login&login=t1est&pwd=t1est
[/pre]
по протоколу HTTP/1.1 методом пост, библиотеками, входящих в activ perl под виндовс и получить в ответ страничку. Как вариант найти способ самому смотреть на запросы, которые я посылаю, что бы иметь возможность приводить их к правильному виду. Я пытаюсь послать такой запрос через сокеты и через LWP. Но не получается.
>[оверквотинг удален]
> Cache-Control: max-age=0
> Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
> Content-Type: application/x-www-form-urlencoded
> Content-Length: 34
> action=login&login=t1est&pwd=t1est
> по протоколу HTTP/1.1 методом пост, библиотеками, входящих в activ perl под виндовс
> и получить в ответ страничку. Как вариант найти способ самому смотреть
> на запросы, которые я посылаю, что бы иметь возможность приводить их
> к правильному виду. Я пытаюсь послать такой запрос через сокеты и
> через LWP. Но не получается.Запихнул в массив
my @headers = (
"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding: gzip, deflate",
"Referer: http://www.the-game.ru/",
"Cache-Control: max-age=0",
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3",
"Content-Type: application/x-www-form-urlencoded",
"Content-Length: $cont_len"
);
отправил и получил
POST /overview/ HTTP/1.1
Host: www.the-game.ru
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.the-game.ru/
Cache-Control: max-age=0
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
Content-Type: application/x-www-form-urlencoded
Content-Length: 34< HTTP/1.1 200 OK
< Server: nginx/1.1.19
< Date: Fri, 18 Oct 2013 01:14:43 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Set-Cookie: SID=9774074IPDWWLGAPFVWICRJGPTC; path=/
< Cache-Control: no-cache
< Expires: Fri, 18 Oct 2013 00:58:03 GMT
< Content-Encoding: gzip
Похоже на ваш образец.
Вроде и curl под винду есть?
Кто-нибудь может помочь переделать скрипт с Сокет на LWP?
Причина, как я понял сокет не умеет автоматически генерировать куки.
#!perl
use IO::Socket;
my $res; my @res;
my $url="www.the-game.ru";
my $port="http(80)";
my $sock = IO::Socket::INET->new( # объявляем сокет
Proto => "tcp", # указываем протокол
PeerAddr => $url, # указываем доменное имя или ip
PeerPort => $port # указываем сервис и порт
);
if($sock) { # проверяем, удачно ли открылся сокет
$sock->autoflush(1); # отключаем буферизацию
print $sock "POST http://.$url./overview/ HTTP/1.1\nPOST http://www.the-game.ru/overview HTTP/1.1\nHost: www.the-game.ru\nUser-Agent: Mozilla//5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko//20100101 Firefox//24.0\nAccept: text//html,application//xhtml+xml,application//xml;q=0.9,*//*;q=0.8\nAccept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3\nReferer: http://www.the-game.ru/\nCache-Control: max-age=0\nAccept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3\nContent-Type: application/x-www-form-urlencoded\nContent-Length: 34\n\naction=login&login=t1est&pwd=t1est\n\n";
while( $res = <$sock>) { # читаем ответ из сокета
push @res,$res;
}
close($sock); # закрываем сокет
}
open FILE, '>ww.xls';
print FILE "@res \n ";
> Кто-нибудь может помочь переделать скрипт с Сокет на LWP?Лови:
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
my $url = 'http://www.the-game.ru/overview/';
my $referer = 'http://www.the-game.ru/';
my $user = 't1est';
my $pass = 't1est';
my %params = (
'action' => 'login',
'login' => $user,
'pwd' => $pass
);
my %headers = (
'User-Agent' => 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0',
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' => 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding' => 'gzip, deflate',
'Referer' => $referer,
'Cache-Control' => 'max-age=0',
'Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.3',
'Content-Type' => 'application/x-www-form-urlencoded',
);
my $browser = LWP::UserAgent->new();
$browser->cookie_jar({});
my $response = $browser->post($url, \%params, \%headers);
if ( $response->is_error() ) {
printf " %s\n", $response->status_line;
} else {
print $response->content;
# print $response->as_string;
}
Забыл про ваш "Content-Length", его же обязательно нужно указывать и считать?Вот другой вариант, кстати, здесь заголовки представлены массивом, а не хешем, как в предыдущем примере.
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
my $url = 'http://www.the-game.ru/overview/';
my $referer = 'http://www.the-game.ru/';
my $user = 't1est';
my $pass = 't1est';
my $params = "action=login&login=$user&pwd=$pass";
my $cont_len = length $params;
my @headers = (
"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding: gzip, deflate",
"Referer: $referer",
"Cache-Control: max-age=0",
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3",
"Content-Type: application/x-www-form-urlencoded",
"Content-Length: $cont_len"
);my $browser = LWP::UserAgent->new();
$browser->cookie_jar({});
my $response = $browser->post($url, \@headers, Content => $params);
if ( $response->is_error() ) {
printf " %s\n", $response->status_line;
} else {
print $response->content;
# print $response->as_string;
}
Огромнейшее спасибо. В этих 2-х примерах сложено все что я хотел изучить и понять. Я Ваш должник. :). До меня дошли все мои ошибки.
> Огромнейшее спасибо. В этих 2-х примерах сложено все что я хотел изучить
> и понять. Я Ваш должник. :). До меня дошли все мои
> ошибки.Да, ладно!
Делай добро и бросай его в воду! (С)
Может и вы, в свою очередь, кому-нибудь, когда-нибудь поможете. ))Давайте, я вам примерчик с сокетом подкину.
Посмотрите его внимательно, сравните с вашим, разница в мелочах, но именно она оказывает существенное значение.#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
my $url = 'www.the-game.ru';
my $referer = 'http://www.the-game.ru/';
my $user = 't1est';
my $pass = 't1est';
my $params = "action=login&login=$user&pwd=$pass";
my $cont_len = length $params;
my @headers = (
"POST http://$url/overview/ HTTP/1.0",
"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding: gzip, deflate",
"Referer: $referer",
"Cache-Control: max-age=0",
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3",
"Content-Type: application/x-www-form-urlencoded",
"Content-Length: $cont_len","",
"$params",""
);
my $sock = new IO::Socket::INET (
PeerAddr => $url,
PeerPort => '80',
Proto => 'tcp',
);
die "Could not create socket: $!\n" unless $sock;
$sock->autoflush(1);
my $socket = join("\n", @headers);
print $sock $socket;
while ( <$sock> ) { print }
close $sock;
Предыдущий пример можно и без промежуточного массива.#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;my $url = 'www.the-game.ru';
my $referer = 'http://www.the-game.ru/';my $user = 't1est';
my $pass = 't1est';my $params = "action=login&login=$user&pwd=$pass";
my $cont_len = length $params;my $sock = new IO::Socket::INET (
PeerAddr => $url,
PeerPort => '80',
Proto => 'tcp',
);
die "Could not create socket: $!\n" unless $sock;$sock->autoflush(1);
print $sock join("\n",
"POST http://$url/overview/ HTTP/1.0",
"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding: gzip, deflate",
"Referer: $referer",
"Cache-Control: max-age=0",
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3",
"Content-Type: application/x-www-form-urlencoded",
"Content-Length: $cont_len","",
"$params",""
);my @body;
while ( <$sock> ) { push @body, $_ }
close $sock;my $filename = "/tmp/thegameru.html";
open FH, ">", $filename;
print FH @body;
close FH;
Появилась еще одна интересная проблема, к решению которой не знаю с какой стороны подойти.
Есть нейкая программа *.pl. В ней написано
#!/usr/bin/perl
use Empire; # или другое название
$Empire->queue(375,621)->addJob(3);Вопрос, что должно быть написано в файле Empire.pm (самописном), что бы файл выполнил действие
$url="http://www.the-game.ru/frames/planet_buildings/on/planet/?pl...$Empire='$url="http://www.the-game.ru/frames;'; # начало вроде должно быть таким, а вот дальше...
Вы всё с игрой возитесь?
Здесь смотрели => http://www.the-game.ru/about/scripting/ ?
> Вы всё с игрой возитесь?
> Здесь смотрели => http://www.the-game.ru/about/scripting/ ?Так вот именно эти скрипты и подсадили меня на перл. То что есть на этой ссылке знаю почти наизусть. Написал на нем много скриптов, но это язык внутренний и имеет ограничения. Я же хочу сделать то же самое внешне, но что бы эти команды выполняли старые функции. Для этого мне надо написать что-то типа переводчика. Я считаю что это неплохой способ изучить перл дальше банальной математики.
>> Вы всё с игрой возитесь?
>> Здесь смотрели => http://www.the-game.ru/about/scripting/ ?
> Так вот именно эти скрипты и подсадили меня на перл. То что
> есть на этой ссылке знаю почти наизусть. Написал на нем много
> скриптов, но это язык внутренний и имеет ограничения. Я же хочу
> сделать то же самое внешне, но что бы эти команды выполняли
> старые функции. Для этого мне надо написать что-то типа переводчика. Я
> считаю что это неплохой способ изучить перл дальше банальной математики.Как успехи? ))
По поводу Empire.pm - вам надо смотреть в сторону
объектно-ориентированного программирования в perlКстати, о птичках, в 5 посте у вас при использовании IO::Socket вылезала ошибка "HTTP/1.1 400 Bad Request".
Просто в отличии от HTTP/1.0 версия HTTP/1.1 строго проверяет наличие определённых заголовков.
Можно посмотреть здесь => http://tools.ietf.org/html/rfc2068Минимальный вариант такой
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;my $url = 'www.the-game.ru';
my $referer = 'http://www.the-game.ru/';my $user = 't1est';
my $pass = 't1est';my $params = "action=login&login=$user&pwd=$pass";
my $cont_len = length $params;my $sock = new IO::Socket::INET (
PeerAddr => $url,
PeerPort => '80',
Proto => 'tcp'
);
die "Could not create socket: $!\n" unless $sock;$sock->autoflush(1);
print $sock join("\n",
"POST http://$url/overview/ HTTP/1.1",
"Connection: close",
"Host: $url",
"Content-Length: $cont_len","",
"$params"
);while(<$sock>) {print}
$sock->close;Важно наличие заголовка "Connection: close" иначе повиснет. ))
Вот, ещё Империю строят => http://www.wolfpackempire.com/ и к ней => http://search.cpan.org/~romm/Empire-0.121/
Даже сервер есть => http://sourceforge.net/projects/empserver/ типа "Цивилизации".
Можно попробовать самому поднять, на поиграться.
Вы меня заразили.))
> Как успехи? ))
> По поводу Empire.pm - вам надо смотреть в сторону
> объектно-ориентированного программирования в perl
> Важно наличие заголовка "Connection: close" иначе повиснет. ))
> Вот, ещё Империю строят => http://www.wolfpackempire.com/ и к ней => http://search.cpan.org/~romm/Empire-0.121/
> Вы меня заразили.))Потихоньку.
Понимаю, что это ООП, да вот зацепиться пока не получается (примера нет). Я как бы использовал классы, но одно дело использовать, а другое дело создавать. Скажем так, пока положил рядышком и посматриваю.
Насчет
"Connection: close" - у меня наоборот виснет при этом, да и все браузеры посылают - Conection: keep-alive - работает нормально, но настроив нормально LWP я перестал смотреть (вылизывать) код на сокетах. LWP - как-то поприятней глазу и на сокетах у меня почему-то соединение всегда было 1 мин., несмотря на команду выхода с сервера и изменения таймаутов.
2 империи я точно не подниму. Мне бы с одной разобраться.
Смысл моей истории в следующем:
5 лет назад зарегался, полтора года поиграл, бросил на год.
2 года назад зарегался - поиграл топом, (стал писать скрипты на внутреннем языке), у меня тогда был знакомый, профессиональный программер, благодаря ему и пошло дело. Бросил на год.
Сей час зарегался, пытаюсь создать скрипто империю. Делаем это вдвоем, мой партнер делает то же что и я, но на PHP. На данный момент собираемся подключать Mysql.
Ник в игре тот же что и тут. Вся информация - в закрытом коммуникаторе. Был бы премного признателен за советы и ответы на дурацкие вопросы.
> #!/usr/bin/perl
> use Empire; # или другое название
> $Empire->queue(375,621)->addJob(3);
> Вопрос, что должно быть написано в файле Empire.pm (самописном), что бы файл
> выполнил действие
> $url="http://www.the-game.ru/frames/planet_buildings/on/planet/?pl...sub Empire::queue {
sub addJob{
$url="http://www.the-game.ru/frames/planet_buildings/on/planet/?pl...
}
}
$Empire->queue(375,621)->addJob(3);
А в этой строчке убрать значек $
и должно отработать, короче я зацепился. Начало получаться.