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

Форум PHP

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

 

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

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

тема: эмуляция браузера на PHP
 
 автор: uriy   (26.12.2011 в 16:01)   письмо автору
 
 

Привет!
Вот таким кодом я читаю контент со страницы:


            $content = '';
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt(
                $curl,
                CURLOPT_HTTPHEADER,
                Array(
                    'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1' . "\r\n",
                    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' . "\r\n",
                    'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3' . "\r\n",
                    'Accept-Encoding: gzip, deflate' . "\r\n",
                    'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7' . "\r\n",
                    'Connection: keep-alive' . "\r\n",
                    "\r\n",
                    "\r\n"                    
                )
            );
            curl_setopt($curl, CURLOPT_COOKIEJAR, "filecookie");
            curl_setopt($curl, CURLOPT_COOKIEFILE, "filecookie");
            curl_setopt($curl, CURLOPT_HEADER, 1);
            curl_setopt($curl, CURLOPT_NOBODY, 1);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
                                  
            $content = curl_exec($curl);
            $handle = curl_copy_handle($curl);
            echo $handle . '<br>';
            echo $content . '<br>';
            curl_close($curl);
            return $content;


Страница считывается нормально, но что-то происходит с нужными мне ссылками, которые расположены в теле текста страницы. Причём, что интересно, когда скрипт работает на домашнем серваке под виндой, то ссылки нормальные, не битые, а как только запускаю скрипт на хостинге, нужные ссылки битые.
Как быть, что делать? Хост как-то определяет, что контент читает бот, а не браузер и выдаёт битые ссылки.

  Ответить  
 
 автор: uriy   (26.12.2011 в 16:03)   письмо автору
 
   для: uriy   (26.12.2011 в 16:01)
 


            $content = '';
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt(
                $curl,
                CURLOPT_HTTPHEADER,
                Array(
                    'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1' . "\r\n",
                    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' . "\r\n",
                    'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3' . "\r\n",
                    'Accept-Encoding: gzip, deflate' . "\r\n",
                    'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7' . "\r\n",
                    'Connection: keep-alive' . "\r\n",
                    "\r\n",
                    "\r\n"                    
                )
            );
            curl_setopt($curl, CURLOPT_COOKIEJAR, "filecookie");
            curl_setopt($curl, CURLOPT_COOKIEFILE, "filecookie");
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
                                  
            $content = curl_exec($curl);
            $handle = curl_copy_handle($curl);
            echo $handle . '<br>';
            echo $content . '<br>';
            curl_close($curl);
            return $content;


Немножко поправил код. Вот щас всё верно.

  Ответить  
 
 автор: cheops   (26.12.2011 в 19:14)   письмо автору
 
   для: uriy   (26.12.2011 в 16:01)
 

Возможно уже IP-адрес забанен, или он дергает whois-сервер и "видит", что это подсеть принадлежит хост-провайдеру, а не обычному провайдеру.

  Ответить  
Rambler's Top100
вверх

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