如何用php伪造浏览器ua?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用php伪造浏览器ua?相关的知识,希望对你有一定的参考价值。
比如我的手机上浏览器ua设置的是android,在浏览器中输入我的网页地址会自动识别我的浏览器是手机用户,对应显示手机页面,那么问题是,如何在我的php网页中加入代码,使得我的浏览器ua即使设置的是Android,也会被欺骗为是电脑,自动显示的是电脑页面?
file_get_contents 和 curl 这俩强悍的函数,在远程抓取时候相当有用处。不过一些网站会根据来访ip是否携带user_agent来判断是正常的浏览器客户端还是机器。所以,我们的任务就是给他们伪造user_agent。file_get_contents伪造user_agent 方法如下:
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.baidu.com)');
curl伪造user_agent的方法:
curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.baidu.com)');
附带上curl的完整函数方法:
function curl_get_file_contents($URL)
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($c, CURLOPT_HEADER, 1);//输出远程服务器的header信息
curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.baidu.com)');
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
curl_close($c);
if ($contents) return $contents;
else return FALSE;
这样就可以抓取了,user_agent是可以自己修改的。 参考技术A 浏览器UA是随着http协议一起发送到服务器后端的。
不管你是手机端浏览器还是PC端浏览器展示的页面都是由服务器来控制的。
服务器端逻辑可以设置成不管你说手机端还是pc端访问都返回给相同的界面。 参考技术B 那么问题来了,请问这位选手,到底是谁欺骗谁呢?请开始你的作答 参考技术C PHP伪造user_agent的方法
Posted in PHP编程技术 on 2012/03/31 / 引用(0)
file_get_contents 和 curl 这俩强悍的函数,在远程抓取时候相当有用处。不过一些网站会根据来访ip是否携带user_agent来判断是正常的浏览器客户端还是机器。所以,我们的任务就是给他们伪造user_agent。
file_get_contents伪造user_agent 方法如下:
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.baidu.com)');
curl伪造user_agent的方法:
curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.baidu.com)')。 参考技术D 用curl设置下User-Agent就行,别人博文的连接我就不发了,有链接度娘要删帖的。
很简单 你自己搜下
PHP:如何用 php 捕获浏览器窗口屏幕?
【中文标题】PHP:如何用 php 捕获浏览器窗口屏幕?【英文标题】:PHP: How to capture browser window screen with php? 【发布时间】:2010-12-29 11:35:15 【问题描述】:首先,我不确定,如果可以用 php 捕获浏览器窗口屏幕,那么 怎么办?
如果可能,最好只捕获网站内容,不包括菜单栏、工具栏、状态栏等浏览器部分。
谢谢
【问题讨论】:
***.com/questions/713938/… 我专门研究 php,但你分享了一些很酷的东西,谢谢 :) 【参考方案1】:PHP 对浏览器一无所知。事实上,通常PHP在浏览器接收到数据之前就已经运行完毕。
如果可能的话,它必须是一个客户端系统,例如 Javascript。这可以遍历 DOM,从而捕获浏览器认为它正在显示的模型;但我不记得看到任何工具来捕获实际图形。 无论如何,尚不清楚您可以用这些信息做什么。浏览器不允许 Javascript 访问本地文件。我想您原则上可以通过 Ajax 调用将其发送回服务器。
【讨论】:
它确实知道浏览器的用户代理字符串。但与客户的实际计算机无关。【参考方案2】:有imagegrabscreen()
和imagegrabwindow()
,它们允许您通过COM 以编程方式从在同一台机器上运行的浏览器创建屏幕截图(但仅限Win)。有关如何省略浏览器的 chrome,请参阅手册中的 cmets。启用DCOM 后,这也适用于已设置为允许通过 DCOM 访问的远程 Windows 机器。
对于那些说 PHP 不了解浏览器的人的旁注,我建议查看 PHP 手册中的 get_browser()
。不算多,不过也不算什么。
【讨论】:
【参考方案3】:从根本上不受互联网架构的支持,这是有充分理由的。您连接到的服务器不应该有任何关于您的信息,而不是处理和响应您的请求所需的信息。服务器肯定不能捕获有关您在屏幕上查看的内容的信息。
也就是说,您可能可以安装一些涉及客户端技术的东西,例如 ActiveX、Flash 或 Java,它们会捕获屏幕,然后在 AJAX 请求中将其发送回服务器,但您可能不应该这样做。我无法想象你会对这样的东西有什么样的用途,除了调试布局问题。
【讨论】:
【参考方案4】:您不能从 PHP(服务器端)执行此操作。
但是您可以使用众多 HTML 到 PDF 转换器中的一种来捕获图像(并且有很多工具可以将 PDF 转换为其他内容)。
【讨论】:
【参考方案5】:这完全可以做到,只需要比 PHP 多一点的时间就可以做到。我有一个用 PHP 编写的应用程序,它以一定的时间间隔拍摄网站的快照。开始有点棘手,但这是我在 Linux 机器上采取的步骤:
安装 Xvfb(或 vnc-server)以在内存中模拟 X Windows 会话。启动 Xvfb 显示:1 安装火狐 安装 imagemagick 创建一个 bash 脚本以在所需的 URL 上运行 Firefox。我的看起来像这样:.
#!/bin/bash
DISPLAY=:1 firefox &
sleep 2s
DISPLAY=:1 firefox -kill-all &
sleep 1s
DISPLAY=:1 firefox -url $1 &
sleep 5s
DISPLAY=:1 import -window root /var/www/images/screenshots/$2.png
从 PHP 执行脚本:
.
exec ('sh ../scripts/screencap.sh ' . $url . ' ' . $file_name);
对我来说最棘手的部分是在屏幕截图发生时让浏览器全屏显示。因为不能直接访问浏览器,所以必须通过火狐的配置文件来配置一切,这可能需要一些时间才能弄清楚。
帮助您入门的有用链接:
http://semicomplete.com/blog/geekery/xvfb-firefox.html http://www.webmasterworld.com/forum21/9182.htm
【讨论】:
以上是关于如何用php伪造浏览器ua?的主要内容,如果未能解决你的问题,请参考以下文章