JxBrowser的初步使用和证书

因为在做广告系统的时候,很多来自第三方的广告链接很多时候跳转并不成功,这个时候需要需要在服务端筛选这些链接,同时尽可能模拟客户端的webview(webkit),所以选择了JxBrowser.(jxbrowser-6.20)
下面是按照使用步骤(官方教程:https://jxbrowser.support.teamdev.com/support/solutions/articles/9000012865-quick-start-guide-for-javafx-developers)
一、下载依赖包http://www.teamdev.com/jxbrowser
在windows需要jxbrowser.jar和jxbrowser-win32.jar
二、得到许可
https://www.teamdev.com/jxbrowser#evaluate填写信息,在邮件里面得到一个30天的许可
三、代码
完整的包结构为:
aaaa.png

package fx;

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserCore;
import com.teamdev.jxbrowser.chromium.internal.Environment;
import com.teamdev.jxbrowser.chromium.javafx.BrowserView;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 * The sample demonstrates how to create Browser instance, embed it,
 * load HTML content from string, and display it.
 */
public class HelloWorld extends Application {
    @Override
    public void init() throws Exception {
        // On Mac OS X Chromium engine must be initialized in non-UI thread.
        if (Environment.isMac()) {
            BrowserCore.initialize();
        }
    }

    @Override
    public void start(Stage primaryStage) {
        Browser browser = new Browser();
        BrowserView browserView = new BrowserView(browser);

        StackPane pane = new StackPane();
        pane.getChildren().add(browserView);
        Scene scene = new Scene(pane, 500, 400);
        primaryStage.setTitle("JxBrowser: JavaFX - Hello World");
        primaryStage.setScene(scene);
        primaryStage.show();

        browser.loadHTML("<html><body><h1>Hello World CIIKA!</h1></body></html>");
    }

    public static void main(String[] args) {
        launch(args);
    }
}

四、破解许可证
在下载的包里面有个demo,里面有一个,demo\META-INF\teamdev.licenses,把这个解压出来,替换到上面的临时证书里面的META-INF\teamdev.licenses即可。
首先把teamdev.licenses的内容替换为:

Product: JxBrowser
Version: 6.x
Licensed to: 
License type: Evaluation
License info: Single-user license
Expiration date: 13-08-2088
Support expiration date: 13-08-2088
Generation date: 14-07-2018
Platforms: win32/x86;mac/x86;linux/x86;linux/x64;mac/x64;mac/ppc;win32/x64
Company name: NO COMPANY
SigB: 1
SigA: 1

然后放入到license.jar,重新加入到classpath里面去
在入口里面加入:

static {
        try {
            Field e = ay.class.getDeclaredField("e");
            e.setAccessible(true);
            Field f = ay.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();
        }

    }

注意import com.teamdev.jxbrowser.chromium.ay;
启动后确实是破解了
以上方法在6.16里面测试通过,6.21,6.20的版本里面ay的这个类发生了变化,无法通过这个方法破解,建议换成az.class试试看。
还有个方式比较笨,但是有效,就是跳转系统时间,调整为任何一个在你试用证书有效期内的时间均可。
以上破解方式仅限学习使用,如果公司确实赚钱,建议还是购买版权。

问题:Access restriction: The type 'Application' is not API (restriction on required library 'C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\jfxrt.jar')
由于JDK里面没有javafx的扩展,我选择下了一个带完整SDK的eclipse,http://downloads.efxclipse.org/eclipse.org/sdks/releases/2.4.0/

标签: none

已有 9 条评论

  1. 晓风残月 晓风残月

    楼主,你好,请问下,你使用的是哪个版本的?现在官网没有办法申请licenses,申请的那个按钮点击没有用?另外问一下,你这种办法可以用于最新的版本吗?

    1. 非常抱歉,证书还是破解失败。试用的licenses是可以申请的,地址为:https://www.teamdev.com/jxbrowser#evaluate,点击右上角的EVALUATE NOW即可,填写你的邮箱,它会把临时licenses发到你的邮箱。是的是jxbrowser-6.20版本。

    2. 确实可以破解,用的是6.16的版本

  2. xujun xujun

    当前官网确实无法申请试用licenses了。那个申请按钮一直是禁用状态。能否请你发个licenses.jar给我邮箱呢

    1. 可以,把你的邮箱发我一下

      1. 2513889970@qq.com 谢谢

      2. 乐一号 乐一号

        哥们,能也发我下么
        176992641@qq.com 谢谢了

  3. 沈

    你好,请问如果是maven的项目的话,怎么依赖license.jar?

添加新评论