首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Chromium Embeded 3 (JCEF3)移动版本仿真

Java Chromium Embeded 3 (JCEF3)移动版本仿真
EN

Stack Overflow用户
提问于 2014-11-02 16:16:59
回答 1查看 227关注 0票数 0

我想写java应用程序使用jcef3和模拟作为移动浏览器。

我确实是这么想的:

代码语言:javascript
复制
    @Override
    public boolean onBeforeResourceLoad(CefBrowser cefBrowser, CefRequest cefRequest) {
        Map<String, String> headerMap = new HashMap<String, String>();
        Map<String, String> newHeaderMap = new HashMap<String, String>();

        cefRequest.getHeaderMap(headerMap);

        for (Map.Entry<String, String> entry : headerMap.entrySet())
        {
            if (entry.getKey().equals("User-Agent")) {
                newHeaderMap.put(entry.getKey(), "Mozilla/5.0 (Linux; Android 4.3; GT-I9300 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36");
            } else {
                newHeaderMap.put(entry.getKey(), entry.getValue());
            }
        }

        cefRequest.setHeaderMap(newHeaderMap);

        return false;
    }

问题是我想浏览的那个页面,就像移动设备检测到的那样,这是一些奇怪的操作系统:),我不知道为什么。如果我下载一些插件表单chrome,比如用户代理切换器,并使用相同的UA,那么一切都是正常的,所以我确信页面使用了用户代理验证。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-12-15 15:54:42

好吧,我解决了这个问题。

通常有两种方法来检测浏览器。第一个是请求头。我的示例代码展示了如何做到这一点。第二个是javascript navigator属性。这就是问题所在。请求使用正确的userAgent发送,但javascript navigator.userAgent显示错误的用户代理版本,该版本与请求标头中发送的版本不同。为了正确地做到这一点,你应该覆盖javascript navigator.userAgent变量。在CEF3中,注入一些覆盖它的javascript代码是没有问题的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26697344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档