Юзер-агент в курле

Levitt

Профессор
Регистрация
20 Май 2008
Сообщения
361
Реакции
43
В общем, гляньте что не так с кодом вызова курла и передачей юзер-агента.

Если юзерагент заполнен то в спашенном тексте с Для просмотра ссылки Войди или Зарегистрируйся присутствуют кракозябри, если юзераегнту передавать имеет пустое значение то текст парсится отлично. Как наладить скрипт с не пустым юзер-агентом? Может что-то ещё не передал?

PHP:
<?
$ragent="Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)"; 
// $ragent="";
   $ch = curl_init();
                curl_setopt( $ch, CURLOPT_URL, "http://www.google.com/search?q=hello&hl=en" );
                curl_setopt( $ch, CURLOPT_HEADER, 0 );
                curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
                curl_setopt( $ch, CURLOPT_TIMEOUT, 20 );
                curl_setopt( $ch, CURLOPT_PORT, 80 );
                curl_setopt( $ch, CURLOPT_USERAGENT, $ragent); //
                $content = curl_exec( $ch );
                $code = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
                if ( $code >= 400 )
                        $content = false;
                curl_close( $ch );
              echo $content;
?>
 
Какие заголовки получает курл при отправке юзер агента и при пустом юзер агенте? Кусок полученных крякозябл в студию! Возможно поисковик отдает тект в сжатом виде, например, в gzip.
 
Хедеры никакие предварительно не задаю.
Вот такое встречается:
‎‏ - ‎‏12 hours ago
 
Хедеры никакие предварительно не задаю.
Вот такое встречается:
‎‏ - ‎‏12 hours ago
это у вас кодировочка отличается от передаваемой. гугль отдает UTF-8, а у вас скрипт заточен под другую.
текст точно не сжат, видно что латиница проходит норм.
 
это у вас кодировочка отличается от передаваемой. гугль отдает UTF-8, а у вас скрипт заточен под другую.
текст точно не сжат, видно что латиница проходит норм.
Видно, но вот почему когда пустой юзер-агент то все норм?
 
Видно, но вот почему когда пустой юзер-агент то все норм?
капитан очевидность сказал бы что кодировка отдаваемого текста зависит от юзерагента, возможно, в нем у вас прописан "ru", например

попробуйте посмотреть какая кодировка отдается при пустом агенте и заполненном
mb_detect_encoding - в помощь.
 
капитан очевидность сказал бы что кодировка отдаваемого текста зависит от юзерагента, возможно, в нем у вас прописан "ru", например

попробуйте посмотреть какая кодировка отдается при пустом агенте и заполненном
mb_detect_encoding - в помощь.
в первом сообщении есть рабочий код, в котором прописан юзерагент без упоминаний языка. Язык вообще через юзер-агент не передается
 
У меня твой код выдаёт одинаковый результат не зависимо от того, указан юзер-агент или нет.
С русским запросом кракозябры вылазят, если файл в ANSI кодировке. Если сохранить его в UTF - всё нормально работает.
Значит либо сохраняй файл в UTF, либо перекодируй запрос.
 
гугль выдает ответ не только по юзерагенту, но и по геоип - если прямо не указано в каком виде отдавать, а hl=en насколько помню не влияет на кодировку выдачи. т.е. вполне возможно что не получив юзерагента гугль решает выдавать кодировку cp1251 (основываясь на вашем ип), а получив юзер агент - смотрит по базе - видит, что с данным юзерагентом броузеры нормально отрабатывают utf-8 - вот и отдает. Гугль делает ВСЕ для "удобства" пользователя ;)
 
Назад
Сверху