JxBrowser监听并修改网络请求
Posted on: 2021-03-19, Last modified: 2021-03-19, View: 1735
Posted on: 2021-03-19, Last modified: 2021-03-19, View: 1735
我的需求是 访问一个网页,这个网页会发送一个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");