Привет!Столкнулся с такой проблемой. Пытался разобрать страничку http://livescore.com/default.dll?page=italy
Проблема в том, что "скачать" саму страничку не получается. file_get_contents не хочет брать, пишет, что на моем сервере не найден default.dll. Оно и понятно... fopen wrappers включены.
Была идея подключиться через интерфейс сокетов, тоже не получилось, их гребаный IIS постоянно возвращает, что у меня не правильные аргументы. Я так подумал, что они отслеживают Cookie в заголовке, однако, отключив в Firefox их, я все равно смог зайти на сайт.
Пробывал перехватывать заголовок, который Firefox отправляет туда, вставлял его в свой сокет. 1 раз как-то чудом скрипт сработал, но правда подвис и вернул только половину содержимого в другой кодировке. Стал обновлять - просто не выполняется и все.
Исходник на сокетах:
<?php
$host32='www.livescore.com';echo "<h2>TCP/IP Connection</h2>\n";
/* Get the port for the WWW service. */
$service_port = getservbyname ('www', 'tcp');/* Get the IP address for the target host. */
$address = gethostbyname ($host32);/* Create a TCP/IP socket. */
$socket = socket_create (AF_INET, SOCK_STREAM, 0);
if ($socket < 0) {
echo "socket_create() failed: reason: " . socket_strerror ($socket) . "\n";
} else {
echo "OK.\n";
}echo "Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect ($socket, $address, $service_port);
if ($result < 0) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
} else {
echo "OK.\n";
}$out = '';
$in = "GET /default.dll?page=italy&sid=0804aX HTTP/1.1\r\n";
$in .= "Host: livescore.com\r\n";
$in .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8\r\n";
$in .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
$in .= "Accept-Language: ru\r\n";
$in .= "Accept-Encoding: gzip,deflate\r\n";
$in .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
$in .= "Keep-Alive: 300\r\n";
$in .= "Connection: keep-alive\r\n";
$in .= "Referer: http://livescore.com/default.dll?page=italy\r\n&qu...
$in .= "If-Modified-Since: Sun, 13 Apr 2008 17:55:44 GMT\r\n";
$in .= "Cache-Control: max-age=0\r\n\r\n";echo "Sending HTTP request...
";
printf($in);
socket_write ($socket, $in, strlen ($in));
echo "OK.\n";
echo "Reading response:\n\n";
while ($out = socket_read ($socket, 2048)) {
echo iconv("UTF-8","WINDOWS-1251",$out);
}
echo "Closing socket...";
socket_close ($socket);
echo "OK.\n\n";
?>Но хотелось бы услышать вариант о том, как бы скачать все-таки страничку и положить её в мою папку на сервере. Заранее спасибо.
Самый простой способ - сохраните при помощи браузера. Неужели вы думаете, что вас тут будут бесплатно учить работать с http протоколом еще и на пыхе?
Попробуй CURL, достаточно функциональное расширения по работе с такимм задачами