Как подделать useragent для php-скрипта, запускаемого через cron - PullRequest
2 голосов
/ 31 марта 2012

Я запускаю PHP-скрипт через cron каждые 30 минут, который анализирует и сохраняет некоторые страницы моего сайта на одном сервере. Мне нужно запустить скрипт под именем Firefox или Chrome, поскольку проанализированные страницы имеют некоторую зависимость интерфейса от стилей CSS3.

Я попробовал это в моем скрипте:

curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13");

Но зависимые от Firefox или Chrome таблицы стилей не загружаются вместе с ним. Я пробовал как с двойными, так и с одинарными кавычками.

У меня вопрос: возможно ли подделать useragent для скриптов, запускаемых через сервер, а не через браузер и как.

ПРИМЕЧАНИЕ. Я знаю, что у моего браузера плохая зависимость от интерфейса. Но я хочу знать, возможно ли это вообще.

EDIT

Мой скрипт запускает карту сайта на сервере и создает html-кэш страниц в карте сайта. Для этого не нужно выполнять какие-либо файлы js или css. Единственное, что нужно - подделать useragent, чтобы сгенерированный кеш содержал дополнительные файлы js и css для этого браузера, включенные в заголовок.

Вы можете считать, что я генерирую файлы кэша для всех типов браузеров - IE, webkits и firefox. Таким образом, я могу предоставить файл кэша пользователю на основе его браузера. В настоящее время я раздаю всем пользователям одни и те же файлы, то есть без дополнительных CSS-файлов.

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

Ответы [ 3 ]

0 голосов
/ 31 марта 2012

Ну, сначала я бы посмотрел на идентификацию вашего агента пользователя.Я думаю, что это не так уж сложно, попробуйте просто Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1).

Если это не сработает, вы можете попытаться выполнить вызов curl как команду оболочки с exec().В этом случае вы можете столкнуться с проблемами, которые на самом деле страница не отображается.Вы можете обойти это, используя X виртуальный кадровый буфер .Это приведет к тому, что ваша страница будет отображаться в памяти, не показывая никакого вывода на экран - следовательно, она ведет себя как браузер.

Вы можете сделать это так:

0 голосов
/ 31 марта 2012

Вы также можете установить пользовательский агент с помощью ini_set ('user_agent', 'your-user-agent'); Может быть, это поможет вам.

0 голосов
/ 31 марта 2012

Когда вы запускаете скрипт php через Cron, идея заключается в том, что это скрипт, а не запрашиваемая веб-страница.Даже если бы вы могли подделать useragent, css и javascript не будут работать так, как если бы он работал в реальном веб-браузере.Задача cron - запускать сценарии, необработанные сценарии, которые выполняют, например, файловые операции.

...