如何通过 JS 判读出用的是普通IE浏览器还是Webbrowser控件?

macenjie 2014-07-29 05:12:49
有些网站做了巧妙的限制防止用 C# webbrowser 来采集数据。
当我们用自己的C#程序 webbrowser 来打开时候,返回空数据。
只有用普通IE打开,或者用Chrome,firefox之类打开,都可以返回正常数据。
请问这是如何通过 JS 判读出用的是普通IE浏览器还是Webbrowser控件?

PS. 该URL是一个扩展名为JSON的文件。我用自己做的chrome内核的浏览器打开,也是返回空数据。我用 IETester 软件打开,也是返回空数据。
只有用标准的浏览器打开才能读取到正常数据。
或者在 C# 中,用 SHDocVw.InternetExplorer() 打开也能读取到正常数据。
不知道它是如何判断的,请高手帮助解疑,100分相赠,万分感谢!
...全文
221 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
瘦马 2014-07-30
  • 打赏
  • 举报
回复
JS判断浏览器
<script type="text/javascript">

        var Sys = {};

        var ua = navigator.userAgent.toLowerCase();

        if (window.ActiveXObject)

            Sys.ie = ua.match(/msie ([\d.]+)/)[1]

        else if (document.getBoxObjectFor)

            Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1]

        else if (window.MessageEvent && !document.getBoxObjectFor)

            Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1]

        else if (window.opera)

            Sys.opera = ua.match(/opera.([\d.]+)/)[1]

        else if (window.openDatabase)

            Sys.safari = ua.match(/version\/([\d.]+)/)[1];

        

        //以下进行测试

        if(Sys.ie) document.write('IE: '+Sys.ie);

        if(Sys.firefox) document.write('Firefox: '+Sys.firefox);

        if(Sys.chrome) document.write('Chrome: '+Sys.chrome);

        if(Sys.opera) document.write('Opera: '+Sys.opera);

        if(Sys.safari) document.write('Safari: '+Sys.safari);


    </script>
宝_爸 2014-07-30
  • 打赏
  • 举报
回复
相思梦 2014-07-30
  • 打赏
  • 举报
回复
UserAgent 可以模拟浏览器的一个标头信息,不过JS如果可能检查浏览器多数是这样的 我还真不信JS这东西还能检查窗口来着
qwertxp 2014-07-30
  • 打赏
  • 举报
回复
js是无法正确判断浏览器的,修改useragent就可以伪装成任何浏览器。
devmiao 2014-07-29
  • 打赏
  • 举报
回复
根据useragent判断

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧