jxbrowser - CSDN
精华内容
参与话题
  • java嵌入浏览器JxBrowser6.21

    热门讨论 2020-07-28 20:23:51
    这是目前最好的java嵌入浏览器的解决办法,做了个demo,放出整个工程,其中包含了所有平台的资源包和license,希望能帮助到你
  • jxbrowser 是一个非常成熟的 java 内嵌浏览器。使用的是 chrome 内核。但是这个并不免费。 尽量不去破坏源代码的情况去实施破解工作。 声明: 仅仅供学习使用,如商用请购买,本人不负责任何版权问题。
  • jxbrowser 在 jxbrowser 中有一个接口叫做 NetworkDelegate 处理url 请求和相应 Modifier and Type Method and Description boolean onAuthRequired(AuthRequiredParams params) ...
    jxbrowser 在 jxbrowser  中有一个接口叫做 NetworkDelegate  处理url 请求和相应

    Modifier and Type Method and Description
    boolean onAuthRequired(AuthRequiredParams params)
    当请求接收到身份验证并无法使用缓存凭据进行响应时,将调用此方法。
    void onBeforeRedirect(BeforeRedirectParams params)
    当服务器发起重定向即将发生时,将调用此方法
    void onBeforeSendHeaders(BeforeSendHeadersParams params)
    当一个请求即将发生并且初始头已经准备好时调用这个方法
    void onBeforeSendProxyHeaders(BeforeSendProxyHeadersParams params)
    void onBeforeURLRequest(BeforeURLRequestParams params)
    在发起请求之前
    boolean onCanGetCookies(java.lang.String url, java.util.List<Cookie> cookies)
    决定是否可以将cookie发送回Web服务器时,将调用此方法。
    boolean onCanSetCookies(java.lang.String url, java.util.List<Cookie> cookies)
    This method is invoked when Chromium engine decides whether cookies can be saved for the url or not.
    void onCompleted(RequestCompletedParams params)
    请求成功的时候调用
    void onDataReceived(DataReceivedParams params)
    接收数据的时候调用
    void onDestroyed(RequestParams params)
    This method is invoked when a request is being destroyed.
    void onHeadersReceived(HeadersReceivedParams params)
    This method is invoked each time that an HTTP(S) response header is received.
    void onPACScriptError(PACScriptErrorParams params)
    This method is invoked when Chromium proxy resolver failed to parse PAC script file to extract proxy settings.
    void onResponseStarted(ResponseStartedParams params)
    This method is invoked when the first byte of the response body is received.
    void onSendHeaders(SendHeadersParams params)
    This method is invoked right before the HTTP headers are sent to the network.

    我的需求是 访问一个网页,这个网页会发送一个ajax请求,我要拦截他,获取到json
    首先我们自己写一个NetworkDelegate  只需要继承DefaultNetworkDelegate 即可。
    然后写你需要重写的方法。
    因为要模拟手机端访问所以我要重写onBeforeSendHeaders 
    因为要接收ajax返回内容故我需要重写onDataReceived
    public class JackNetworkDelegate4A47 extends DefaultNetworkDelegate
    {
        private  JFrame frame;
        private BrowserView browserView;
        
        public JackNetworkDelegate4A47( JFrame frame,BrowserView browserView)
        {
            this.frame = frame;
            this.frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            this.browserView = browserView;
        }
        
        
        public void onBeforeSendHeaders(BeforeSendHeadersParams params)
        {
            params.getHeadersEx().setHeader("User-Agent", "Mozilla/5.0 (Linux; U; Android 6.0.1; zh-cn; ZUK Z2131 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.5 Mobile Safari/537.36");
            params.getHeadersEx().setHeader("upgrade-insecure-requests","1");
            params.getHeadersEx().setHeader("cache-control","max-age=0");
            params.getHeadersEx().setHeader("accept-encoding","gzip, deflate, sdch, br");
            params.getHeadersEx().setHeader("accept-language","zh-CN,zh;q=0.8");
            params.getHeadersEx().setHeader("upgrade-insecure-requests","1");
            params.getHeadersEx().removeHeader("Connection");
        }
        public void onDataReceived(DataReceivedParams params)
        {
           // System.out.println(params.getURL());
            if(params.getURL().contains("webmain.php"))
            {
                System.out.println(new String(params.getData()));
                params.getBrowser().dispose();
                frame.dispose();
                frame = null;
            }
            // params.getData()
        }
        
    }
    

    在主线程
    final Browser browser = new Browser();
            BrowserView browserView = new BrowserView(browser);
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            frame.add(browserView, BorderLayout.CENTER);
            frame.setSize(700, 500);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            // Handle proxy authorization.
            browser.getContext().getNetworkService().setNetworkDelegate(new JackNetworkDelegate4A47(frame,browserView));  
            browser.loadURL("https://api.47ks.com/webcloud/?v=http://film.sohu.com/album/9353216.html?channeled=1200110001&type=lemid");
            


    展开全文
  • JxBrowser的概述与简单应用

    千次阅读 2018-12-04 13:55:51
    Q:JxBrowser是什么? JxBrowser是一个跨平台的Java库,允许将基于Google Chromium的Web浏览器组件集成到Java Swing / AWT / JavaFX应用程序中。使用JxBrowser,您可以将轻量级Swing / JavaFX组件嵌入到Java应用...
    Q:JxBrowser是什么?
    • JxBrowser是一个跨平台的Java库,允许将基于Google Chromium的Web浏览器组件集成到Java Swing / AWT / JavaFX应用程序中。使用JxBrowser,您可以将轻量级Swing / JavaFX组件嵌入到Java应用程序中,以显示现代网页,支持最新的Web标准,如HTML5,CSS3,JavaScript等。
    Q:为什么选用JxBrowser?
    • BS结构的优点在于,软件维护和升级方便,只要能上网就能升级了且在很多地方都能够直接使用软件,而不需要安装,前提要能登陆到服务器。
    • CS结构缺乏通用性,具有较大的局限性,维护和管理的难度大,但是CS结构的交互性强,而且使用CS能与本地的硬件进行交互(如小票打印机、银联pos机、钱箱等……)
    • 虽然BS结构有诸多优点,但当遇到需要与硬件进行交互时,并不能完全满足业务需求,故而采用了BS+CS结合的方式,希望能同时具有CS结构的交互性与BS的灵活性,使用JxBrowser后,客户端相当于一个带有谷歌浏览器内核的定制浏览器,负责与硬件(如打印机、钱箱、POS机等)的交互,同时负责业务网页的显示,而业务的处理仍是在服务端后台。
    Q:软件的版本迭代是怎么处理的?
    • 客户端的jar包采用第三方插件FxLauncher,在打包时,Fxlauncher会生成一个固定格式的app.xml,app.xml文件中记录了代码的线上地址、每个jar包详情等信息;在客户端启动时,FxLauncher会将本地的app.xml与线上的进行比较,若文件列表中有文件发生变化,则对该文件进行下载覆盖。
    • 其它的文件,如调用银联pos所需的dll文件等,则有自己编写的下载更新模块进行下载与安装
    Q:JxBrowser怎么使用?
    1. JxBrowser的下载
      https://jxbrowser.support.teamdev.com/support/discussions/forums/9000110576
    2. jxbrowser的破解
      (注:破解仅用于技术交流,如有需要还是购买正版的好#手动捂脸)
      在jxbrowser的启动类中加入如下代码:
    static {
            try {
                Class claz = null;
                //6.5.1版本破解 兼容xp
                claz =  Class.forName("com.teamdev.jxbrowser.chromium.aq");
                //6.21版本破解 默认使用最新的6.21版本
    //            claz =  Class.forName("com.teamdev.jxbrowser.chromium.ba");
    
                Field e = claz.getDeclaredField("e");
                Field f = claz.getDeclaredField("f");
    
    
                e.setAccessible(true);
                f.setAccessible(true);
                Field modifersField = Field.class.getDeclaredField("modifiers");
                modifersField.setAccessible(true);
                modifersField.setInt(e, e.getModifiers() & ~Modifier.FINAL);
                modifersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);
                e.set(null, new BigInteger("1"));
                f.set(null, new BigInteger("1"));
                modifersField.setAccessible(false);
            } catch (Exception e) {
                e.printStackTrace();
                logger.error("执行jxbrowser破解程序时出现异常"+LoggerUtil.getErrorMessage(e));
            }
        }
    

    在resources资源文件夹中创建文件夹MATA-INF,在META-INF文件夹下创建teamdev.licenses文件,将下列信息复制到文件中

    Product: JxBrowser
    Version: 6.x
    Licensed to:
    License type: Enterprise
    License info: JxBrowser License
    Expiration date: 01-01-9999
    Support expiration date: NO SUPPORT
    Generation date: 01-01-1970
    Platforms: win32/x86;win32/x64;mac/x86;mac/x64;linux/x86;linux/x64
    Company name: TeamDev Ltd.
    SigB: 1
    SigA: 1
    
    

    OK,破解好了,到此就可以正常使用了

    jxbrowser的6.5.1是最后的支持XP系统的版本,6.21为我下载时的最新版本,根据具体需求选择版本,jxbrowser支持windows、mac、linux,并且都有对应的jar包,jxbrowser.jar为核心jar包,其它的可以根据需求选择性的引入。
    3. 通过JxBrowser实现js与java代码进行交互
    JxBrowser为Browser对象提供了丰富的监听器,要实现js与java代码的交互,只需在监听器中添加创建对象的代码,window是前端中的window对象,这里是通过jxbrowser浏览器获取到window对象,并对该对象扩展了一个名为jsEntity的对象。当然,JsEntity为自定义的一个实体类,需自行创建,创建对象是为了供前端js调用,而后端调用js,直接使用browser.executeJavaScript()即可,传入方法名与参数

     browser.addLoadListener(new LoadAdapter() {
                @Override
                public void onFinishLoadingFrame(FinishLoadingEvent finishLoadingEvent) {
                    super.onFinishLoadingFrame(finishLoadingEvent);
                    JSValue window = browser.executeJavaScriptAndReturnValue("window");
                    //给jswindows对象添加一个扩展的属性
                    JsEntity jsEntity = new JsEntity();
                    window.asObject().setProperty("jsEntity", jsEntity);
                    //调用前端页面js
                    browser.executeJavaScript("alert('我是后台,我调用了js!')");
                }
            });
    

    这里我选择的是加载事件的监听器,加载事件的监听器中有几个方法:

                @Override
                public void onStartLoadingFrame(StartLoadingEvent startLoadingEvent) {
                    super.onStartLoadingFrame(startLoadingEvent);
                }
    
                @Override
                public void onProvisionalLoadingFrame(ProvisionalLoadingEvent provisionalLoadingEvent) {
                    super.onProvisionalLoadingFrame(provisionalLoadingEvent);
                }
    
                @Override
                public void onFinishLoadingFrame(FinishLoadingEvent finishLoadingEvent) {
                    super.onFinishLoadingFrame(finishLoadingEvent);
                }
    
                @Override
                public void onFailLoadingFrame(FailLoadingEvent failLoadingEvent) {
                    super.onFailLoadingFrame(failLoadingEvent);
                }
    
                @Override
                public void onDocumentLoadedInFrame(FrameLoadEvent frameLoadEvent) {
                    super.onDocumentLoadedInFrame(frameLoadEvent);
                }
    
                @Override
                public void onDocumentLoadedInMainFrame(LoadEvent loadEvent) {
                    super.onDocumentLoadedInMainFrame(loadEvent);
                }
    

    从方法名上很容易能看出来分别是重写了什么事件,只需对需要的方法进行重写即可。
    前端js代码:

    <script>
     function jsToJava(){
     	try{
     	    var res = jsEntity.toTest('我是js,我来调用java了');
     	    alert(res);
        }catch(e){
     	    alert(e);
        }
     }
    </script>
    <body onclick="jsToJava()">
    js调用java
    </body>
    
    

    JsEntity实体类的代码:

    public class JsEntity {
    
        public String toTest(String str){
            System.out.println(str);
            return "I'm ok,真的ok,thank you";
        }
    }
    

    在客户端启动时,浏览器加载完毕后,会弹出“我是后台,我调用了js!”,点击事件发生后,后台会输出被js调用的信息,而同时,浏览器会弹窗“I’m ok,真的ok,thank you”,如果要实现js调用硬件,只需在自定义的实体类中添加java调用硬件的代码即可

    到此结束!

    展开全文
  • 一,这里简单的使用收费的jxbrowser,因为比较贵因此要破解(希望大家支持正版 ,不要商业使用) 1,下载jxbrowser jxbrowser 2,现在最新版为jxbrowser 6.21(我用的是win7 64位) 使用的jar包为: jxbrowser-...

    一,这里简单的使用收费的jxbrowser,因为比较贵因此要破解(希望大家支持正版 ,不要商业使用)

    1,下载jxbrowser

    jxbrowser

    2,现在最新版为jxbrowser 6.21(我用的是win7 64位)

    使用的jar包为:

    jxbrowser-6.21.jar

    jxbrowser-win64-6.21.jar

    3,teamdev.licenses的创建

    src/的目录下创建META-INF文件夹,如图所示

    teamdev.licenses

    Product: JxBrowser
    Version: 6.x
    Licensed to:
    License type: Enterprise
    License info: JxBrowser License
    Expiration date: 01-01-9999
    Support expiration date: NO SUPPORT
    Generation date: 01-01-1970
    Platforms: win32/x86;win32/x64;mac/x86;mac/x64;linux/x86;linux/x64
    Company name: TeamDev Ltd.
    SigB: 1
    SigA: 1

    破解完成

     

    二,浏览器的布局和开启

    编写静态块

    static {
    	        try {
    	            Field e = ba.class.getDeclaredField("e");
    	            e.setAccessible(true);
    	            Field f = ba.class.getDeclaredField("f");
    	            f.setAccessible(true);
    	            Field modifersField = Field.class.getDeclaredField("modifiers");
    	            modifersField.setAccessible(true);
    	            modifersField.setInt(e, e.getModifiers() & ~Modifier.FINAL);
    	            modifersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);
    	            e.set(null, new BigInteger("1"));
    	            f.set(null, new BigInteger("1"));
    	            modifersField.setAccessible(false);
    	        } catch (Exception e1) {
    	            e1.printStackTrace();
    	        }
    	    }

    实现java 浏览网页

    public static void main(String[] args) {
    		 	final String url = "http://m.baidu.com/";  
    	        final String title = "百度"; 
    	        Browser browser = new Browser();  
    	        BrowserView view = new BrowserView(browser);  
    	  
    	        JFrame frame = new JFrame();  
    	      //禁用close功能
    	        frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);        
    	        //不显示标题栏,最大化,最小化,退出按钮
    	        //frame.setUndecorated(true);  
    	        frame.setSize(400, 600);
    	        frame.add(view, BorderLayout.CENTER);  
    	        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);  
    	        frame.setLocationByPlatform(true);  
    	        frame.setVisible(true);  
    	        browser.loadURL(url);  
    
    	}

    实现图

    源码下载

    展开全文
  • JxBrowser开启调试模式,JxBrowser debug

    千次阅读 2019-02-22 16:44:03
    像一般的浏览器都带了调试功能,按F12就能打开,在JxBrowser中如何开启调试模式了。   二、解决方法   以下代码就能开启调试模式:   import com.teamdev.jxbrowser.chromium.Browser; import ...

    一、问题描述

     

    像一般的浏览器都带了调试功能,按F12就能打开,在JxBrowser中如何开启调试模式了。

     

    二、解决方法

     

    以下代码就能开启调试模式:

     

    import com.teamdev.jxbrowser.chromium.Browser;
    import com.teamdev.jxbrowser.chromium.BrowserPreferences;
    import com.teamdev.jxbrowser.chromium.swing.BrowserView;
    
    import javax.swing.*;
    import java.awt.*;
    
    /**
     * This sample demonstrates how to use Chromium remote debugging feature.
     */
    public class RemoteDebuggingSample {
    
        public static void main(String[] args) {
            // Specifies remote debugging port for remote Chrome Developer Tools.
            BrowserPreferences.setChromiumSwitches("--remote-debugging-port=9222");
    
            Browser browser1 = new Browser();
            BrowserView view1 = new BrowserView(browser1);
    
            // Gets URL of the remote Developer Tools web page for browser1 instance.
            String remoteDebuggingURL = browser1.getRemoteDebuggingURL();
    
            JFrame frame1 = new JFrame();
            frame1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            frame1.add(view1, BorderLayout.CENTER);
            frame1.setSize(700, 500);
            frame1.setLocationRelativeTo(null);
            frame1.setVisible(true);
    
            browser1.loadURL("http://www.baidu.com");
    
            // Creates another Browser instance and loads the remote Developer
            // Tools URL to access HTML inspector.
            Browser browser2 = new Browser();
            BrowserView view2 = new BrowserView(browser2);
    
            JFrame frame2 = new JFrame();
            frame2.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            frame2.add(view2, BorderLayout.CENTER);
            frame2.setSize(700, 500);
            frame2.setLocationRelativeTo(null);
            frame2.setVisible(true);
            browser2.loadURL(remoteDebuggingURL);
        }
    }
    

     运行之后,效果如下:

     

    展开全文
  • 在JAVA FX中使用JxBrowser,启动之后打开网页,如何这个时候,直接关了窗口,Java进程并不会立马就停掉,而是会等一会,这就是由于JxBrowser还没有关闭导致的。   二、解决方法   只要执行以下代码就可以关闭...
  • 转载请注明文章来源以下两个链接(否则版主有权追究法律责任): NoteShare jxbrowser 6.x 破解Java jxbrowser 是一个非常成熟的 java 内嵌浏览器。使用的是 chrome 内核。但是这个并不免费。 我来教大家怎么破解 ...
  • jxbrowser 6.x 破解Java jxbrowser 是一个非常成熟的 java 内嵌浏览器。使用的是 chrome 内核。但是这个并不免费。 下载后加入licene.jar 然后使用的类继承LiceneCrack618.java 声明: 仅仅供破解爱好使用,本人不...
  • jxbrowser.cracked-1.0_6.x.jar 放在任意位置(推荐跟项目放在一起) 增加 java -javaagent:jxbrowser.cracked-1.0_6.x.jar 参数。(此处使用的是相对路径,也可以写完整路径) 开发时也可以 通过设置 运行参数来...
  • JxBrowser能在Windows、Linux、Mac OS X (Intel and PPC-based)平台上将Mozilla Firefox浏览器完美地整合到Java AWT/Swing应用程序里。该库程序使用Gecko设计引擎来转换HTML文档。因而保证了它能与许多Internet标准...
  • import com.teamdev.jxbrowser.chromium.Browser; import com.teamdev.jxbrowser.chromium.swing.BrowserView; import javax.swing.*; import java.awt.*; public class Test { public static void main(String[]...
  • 实现java简单内嵌浏览器,实现最新版的jxbrowser 6.21
  • jxbrowser.jar

    2020-07-29 14:19:44
    jxbrowser.jar jxbrowser.jar 6.21 xbrowser.jar
  • jxbrowser 所有版本通用的破解包,截至到2018年10月11日,预计以后多个版本都可以通用。 如果哪个版本不能用留言给我,留下联系方式。我帮你解决。
  • jxbrowser-7.3 最新版。附一个,申请的30天key Thank you for your interest in JxBrowser. Here is your free 30-day evaluation license key: 6P830J66YADG56INWOM1T8K3ZPRELTD08OKLJE5INARJSKQHS0NMQ4UY1L...
  • 在项目中引入JxBrowser,然后在Fxml文件中引入JxBrowser的BrowserView控件,文件如下: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;?import java.lang.*?&gt; &...
  • jxbrowser 6.18 以及 6.16 破解 整合

    千次阅读 2018-03-06 15:36:19
    破解方法来源:NoteShare 、 jxbrowser 6.x 破解Java 感谢网友破解6.18方法 破解原理: ( f ^ siga % d ) * ( siga ^ sigb % d ) % d = e ^ sha % d = ...
  • Q:JxBrowser是什么? JxBrowser是一个跨平台的Java库,允许将基于Google Chromium的Web浏览器组件集成到Java Swing / AWT / JavaFX应用程序中。使用JxBrowser,您可以将轻量级Swing / JavaFX组件嵌入到Java应用程序...
  • 基于JxBrowser的浏览器控件封装实现Java Swing的浏览器集成背景实现目标实现代码运行效果完整的代码及依赖jar文件下载 背景 进期客户提出在一个Java Swing项目要集成另外2个系统: 1、集成Fine Report(基于Java Web...
1 2 3 4 5 ... 20
收藏数 425
精华内容 170
热门标签
关键字:

jxbrowser