Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: TV программа парсингом чере американский сервер
 
 автор: webpics   (25.11.2006 в 22:40)   письмо автору
4.8 Кб
 
 

Беру, значит, парсингом с Яндекса страничку с ТВ-программой.
Выдираю с неё же парсингом все ссылки на телеканалы которые есть в выпадающем списке,
И УДИВЛЯЮСЬ-Там совсем не те программы, которые "выпадают" у меня в браузере.
А причина в том, что яндекс "умничает" там, где это от него не требуется. Я живу в россии и в мой браузер он шлёт одни программы, а мой сайт живёт на американском сервере и ему Яндекс шлёт такие каналы как Россия-Планета или НТВ-Мир.
А мне надо, чтобы он слал в америку то же самое, что и в мой браузер.
Как его перебороть?
(содержимое странички Яндекса беру через "fsockopen").

   
 
 автор: cheops   (25.11.2006 в 23:16)   письмо автору
 
   для: webpics   (25.11.2006 в 22:40)
 

Чем страницу выдираете? Через file_get_contnets()? Придётся вероятно действовать через сокеты, передавая параметры российского браузера через HTTP-заголовки.

   
 
 автор: webpics   (26.11.2006 в 15:40)   письмо автору
 
   для: cheops   (25.11.2006 в 23:16)
 

Рад бы через file_get_contnets(), да вот отключили мне эту функцию. Не долго размышляя как сему помочь я взял на одном сайте некий код, на котором кое что поменял да вот обмануть яндекс так и не смог. Он все равно отвечает как будто я в америке. (не признаёт стало быть за своего...)
Вот класс:
class sock
{
function output_r ($path){
$arr = parse_url($path);
$host = $arr[host];
$page = $arr[path];
$query = $arr[query];
if($query!=''){$page.='?'.$query;}
if($page==''){$page='/';}
$fp = @fsockopen($host, 80, &$errno, &$errstr, 30);
if(!$fp){ return implode('',@file($path)); }
$request = "GET $page HTTP/1.0\r\n";
$request .= "Host: $host\r\n";
// $request .= "Accept: text/html, application/xml;q=0.9, */*;q=0.1\r\n";
// $request .= "Accept-Charset: windows-1251, utf-8;q=0.6, *;q=0.1\r\n";
// $request .= "Accept-Encoding: deflate, gzip, identity, *;q=0\r\n";
$request .= "Accept-Language: ru\r\n";
$request .= "Connection: close\r\n";
$request .= "Keep-Alive: 300\r\n";
$request .= "Expires: Thu, 01 Jan 1970 00:00:01 GMT\r\n";
$request .= "Cache-Control: no-store, no-cache, must-revalidate\r\n";
$request .= "Pragma: no-cache\r\n";
$request .= "Cookie: income=1\r\n";
$request .= "Referer: http://$host/\r\n";
$request .= "User-Agent: Mozilla/5.0 (compatible; MSIE 6.0; Windows 98)\r\n";
$request .= "Client-ip: 172.20.218.205\r\n";////////////Dobavil
$request .= "FORWARDED_FOR: 172.20.218.205\r\n";/////////////Dobavil
$request .= "\r\n";
fwrite ($fp,$request);
while ($line = fgets($fp, 1024)){
if (preg_match("~^\r{0,1}\n$~i",$line)){$fest='yes';}
elseif($fest=='yes'){$out .= $line;}
}
return $out;
}}

А вот вызов:
include('clsocket.php');
$a= new sock;
$text = $a->output_r("http://tv.yandex.ru/?day=".$day."&hour=6&period=24&flag=&channel=".$chan);

Поможи-и-те хто чем смо-о-жет..

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования