【问题标题】:How to spoof useragent for a php script run through cron如何欺骗通过 cron 运行的 php 脚本的用户代理
【发布时间】:2012-03-31 20:40:51
【问题描述】:

我每 30 分钟通过 cron 运行一个 PHP 脚本,该脚本会解析我网站的一些页面并将其保存在同一台服务器上。我需要将脚本作为 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 依赖的样式表不会随它一起加载。我尝试了双引号和单引号。

我的问题是:是否可以通过服务器而不是浏览器来欺骗用户代理以及如何欺骗脚本。

注意:我知道我的浏览器对界面的依赖性很差。但我想知道这是否可能。

编辑

我的脚本通过服务器上的站点地图运行,并在站点地图中创建页面的 html 缓存。它不需要执行任何 js 或 css 文件。唯一的事情是欺骗用户代理,以便生成的缓存包含该浏览器的额外 js 和 css 文件,这些文件包含在标头中。

您可以认为我正在为所有浏览器类型(IE、webkits 和 firefox)生成缓存文件。因此,我可以根据用户的浏览器向用户提供缓存文件。目前我正在为所有用户提供相同的文件,即没有额外的 css 文件。

我认为我需要将 css 文件硬编码到我的页面中,以便它始终包含在缓存中(不兼容的浏览器不会显示任何更改,但只会增加他们的文件开销)。还是谢谢

【问题讨论】:

    标签: php curl cron user-agent


    【解决方案1】:

    当您通过 Cron 运行 php 脚本时,想法是它是一个脚本,而不是被请求的网页。即使您可以欺骗用户代理,css 和 javascript 也不会像在真正的 Web 浏览器中运行一样执行。 cron 的重点是运行脚本,原始脚本,例如文件操作。

    【讨论】:

    • 我已经编辑了这个问题,提供了有关脚本的更多信息。谢谢
    【解决方案2】:

    好吧,首先我会查看您的用户代理标识。我觉得没必要复杂,试试Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

    如果这不起作用,那么您可以尝试使用exec() 将 curl 调用作为 shell 命令执行。在这种情况下,您可能会遇到页面本身并未真正呈现的问题。您可以使用X virtual framebuffer 解决此问题。这将使您的页面呈现在内存中,而不显示任何屏幕输出 - ergo 的行为就像浏览器一样。

    你可以这样做:

    exec("xvfb-run curl [...]");
    

    【讨论】:

      【解决方案3】:

      你也可以使用 ini_set('user_agent', 'your-user-agent'); 来设置用户代理。 也许这会对你有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-01
        相关资源
        最近更新 更多