PHP - $HTTP_USER_AGENT

12
T
На сайте с 28.06.2007
Offline
82
6889

Добрый день! Всех с праздником!

Такая проблемка: надо сделать так чтобы php скрипт имел HTTP_USER_AGENT такой, который мне нужен. Например мне надо чтобы HTTP_USER_AGNET был Vasya, делаю так:

<?php
$_SERVER['HTTP_USER_AGENT']="Vasya";
echo $HTTP_USER_AGENT;
?>

Не получается выдаёт мой Agent.

Пробовал ещё так:

<?php
header("User-Agent: Vasya");
echo $HTTP_USER_AGENT;
?>

Тоже не получается выдаёт мой Agent.

Или может мой браузер эту переменную замещает на свой агент и никак не вывести какой всё таки агент у скрипта (хотел сказать что может написание скрипта правильно, только выводится агент браузера из-за того что у него приоритета больше ...)? Не знаю правильно ли я выражаюсь и поймёт ли меня кто-нибудь :(.

Помогите пожалуйста, со вчерашнего дня мучаюсь :(, не могу понять как сделать, только сейчас решил создать здесь тему.

A0
На сайте с 22.09.2007
Offline
70
#1

Во-первых, в общем случае PHP не формирует заголовки запроса документа, в которых фигурирует User-Agent, PHP - это не браузер, это тот, кто "отвечает" браузеру. Изменения HTTP_USER_AGENT на стороне сервера не меняет того, что запрос на получение документа был послан IE/Mozilla/Safari и т. д.

Другое дело, когда PHP сам запрашивает какой-то документ откуда-то. Там вы уже должны сформировать заголовки сами и вы можете в них прописать что угодно.

Теперь по вашему коду:

<?php

$_SERVER['HTTP_USER_AGENT']="Vasya";
echo $HTTP_USER_AGENT;
?>

Здесь вы меняете переменную $_SERVER["HTTP_USER_AGENT"] на "Vasya". В момент изменения она ничего, кроме как строку данных с названием HTTP_USER_AGENT, не представляет. На заголовки запроса, которые уже посланы браузером пользователя и уже приняты сервером она не влияет. Это уже свершившийся факт.

Дальше, $HTTP_USER_AGENT и $_SERVER["HTTP_USER_AGENT"] - это разные переменные, хоть при инициализации скрипта в них и устанавливается одно и то же значение (если Register Globals On, иначе в $HTTP_USER_AGENT вообще не инициализирована). Если вы меняете значение второй переменной, а потом выводите значение первой - вы обращаетесь к разным данным!

<?php

header("User-Agent: Vasya");
echo $HTTP_USER_AGENT;
?>

Функция header устанавливает заголовки ответа! В них такого поля как User-Agent в принципе не предусмотрено. PHP отдает документ, а не запрашивает его. PHP - это не браузер в общем случае.

Просто скажите, какой результат вы хотите получить и ради какой цели - постараюсь помочь.

T
На сайте с 28.06.2007
Offline
82
#2

an0nym, спасибо за такой подробный ответ.

Вообще пытался по разному, не только выводить user_agent, но и посмотреть страничку через curl. Но выдавало не то, что должно было быть.

an0nym:

Просто скажите, какой результат вы хотите получить и ради какой цели - постараюсь помочь.

Задача скрипта: посмотреть как представляется страница под заданным агентом. Т.е. c помощью curl() или fopen() вывести страницу как она будет представляться под заданным агентом. Знаю что есть программки которые меняют Агент браузера, но мне надо чтобы скрипт это исполнял.

Progr@mmer\.
На сайте с 14.10.2007
Offline
44
#3

Обожемой...

От того, что вы поменяйте юзер агента внешний вид страницы не изменится (если только таковое не предусмотрено скриптом). Если вам нужно знать как выглядит ваша страница в разных браузерах, то и открывайте её в разных браузерах, а не изобретайте велосипед.

Если же вам просто для проверки получаемого юзер агента нужно, то открывайте страницу с помощью curl, где на этой странице будет вывод юзер агента.

Код написать или сами сообразите?

Вашей девушке не хватает романтики? Черпните её на сайте «Я Люблю Романтику» (http://iloveromantics.ru/). Романтический форум (http://forum.iloveromantics.ru/) для отдыха от нудной работы.
A0
На сайте с 22.09.2007
Offline
70
#4

<?php

$handler=curl_init("url");

curl_setopt($handler,CURLOPT_USERAGENT,"Vasya");

curl_exec($handler);

?>

Только мне кажется, что вы не совсем понимаете технологию. Вы просто получите код страницы для выбранного вами User-Agent. Но один и тот же код может по-разному выглядеть в IE и Mozilla. Если вас интересует именно рендеринг страницы во всех браузерах - пока вы их не установите, не проверите.

an0nym добавил 09.05.2008 в 14:47

Progr@mmer\.:
Обожемой...

+1. Как мне видится, вы слишком рано добрались до curlа, вам бы еще азам поучиться, понять, как всё работает.

T
На сайте с 28.06.2007
Offline
82
#5

Progr@mmer\., спасибо.

Всё понял благодаря an0nym.

A0
На сайте с 22.09.2007
Offline
70
#6

Умно, однако... Возьму на вооружение сам. Используйте мой код. Он вам поможет. Сами оптимизируйте под curl_multi_exec, я думаю разберетесь. Советую тему не палить, а убрать свое предыдущее сообщение. :)

T
На сайте с 28.06.2007
Offline
82
#7
an0nym:

Сделал как Вы написали:
<?php
$handler=curl_init("http://site.ru/script.php");
curl_setopt($handler,CURL_USERAGENT,"Googlebot");
curl_exec($handler);
?>

Выводит не то, что должен :(.

an0nym:

+1. Как мне видится, вы слишком рано добрались до curlа, вам бы еще азам поучиться, понять, как всё работает.

Согласен, не силён я в PHP, знаю только поверхностно. Когда надо что-то, читаю книги и делаю по примерам. Просто необходимо не очень часто, а времени не так много для самообучения :(.

A0
На сайте с 22.09.2007
Offline
70
#8
Trol:
Выводит не то, что должен :(.

Согласен, не силён я в PHP, знаю только поверхностно. Когда надо что-то, читаю книги и делаю по примерам. Просто необходимо не очень часто, а времени не так много для самообучения :(.

Он выводит код страницы, который отдается с таким юзерагентом. Не забывайте, что сайты также могут сверять, Гугл ли их посещает, не только по юзерагенту, но и по IP запроса. В вашем случае запрос идет с вашего IP.

T
На сайте с 28.06.2007
Offline
82
#9
an0nym:
Советую тему не палить, а убрать свое предыдущее сообщение. :)

Думаю не только я про это думал :). Многие наверняка уже это знают и используют.

an0nym:
Он выводит код страницы, который отдается с таким юзерагентом. Не забывайте, что сайты также могут сверять, Гугл ли их посещает, не только по юзерагенту, но и по IP запроса. В вашем случае запрос идет с вашего IP.

Получается надо сразу работать с данными, а не проверять их с помощью вывода в браузере. Т.е. если я запишу результат как html код в *.txt файл будет всё хорошо? Сейчас проверю :).

A0
На сайте с 22.09.2007
Offline
70
#10

<?php

$handler=curl_init("url");

curl_setopt($handler,CURLOPT_RETURNTRANSFER,TRUE);

curl_setopt($handler,CURLOPT_USERAGENT,"Vasya");

$response=curl_exec($handler);

echo($response);

?>

Наверное, в этом проблема?

В $response записан HTML-код, который выдал тот сайт.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий