import win.ui;
import win.ui.ctrl.vlistEx
/*DSG{{*/
var winform = win.form(text="www.jianma123.com 简码编程";right=1435;bottom=812)
winform.add(
button={cls="button";text="开始 http/https/ws/wss 拦截";left=424;top=760;right=626;bottom=796;db=1;dl=1;dr=1;z=1};
button2={cls="button";text="停止";left=646;top=760;right=722;bottom=796;db=1;dr=1;z=2};
button3={cls="button";text="打开ws测试网站";left=18;top=759;right=138;bottom=795;db=1;dl=1;z=4};
button4={cls="button";text="打开wss测试网站";left=151;top=759;right=271;bottom=795;db=1;dl=1;z=5};
checkbox={cls="checkbox";text="全局代理";left=327;top=769;right=404;bottom=791;z=7};
custom={cls="custom";text="自定义控件";left=7;top=8;right=1423;bottom=457;edge=1;z=8};
editLog={cls="edit";left=1015;top=470;right=1423;bottom=728;edge=1;hscroll=1;multiline=1;vscroll=1;z=6};
vlist={cls="win.ui.ctrl.vlistEx";text="自定义控件";left=7;top=470;right=1008;bottom=740;db=1;dl=1;dr=1;dt=1;edge=1;z=3}
)
/*}}*/
winform.vlist.setColumns({"序号","协议类型","消息类型","url"},{40,100,100,-1});
import process;
import godking.sunny;
var sunny = godking.sunny();
import web.view;
var wb = web.view(winform.custom,"c:\user1",`--proxy-server="socks://127.0.0.1:2021"`);
sunny.callback_http = function(winform,id,msgid,msgtype,mod,url,pid,notice,err){
// 注意:1、回调函数为线程函数;2、要重新引用godking.sunny
import godking.sunny;
var urlTab = string.split(url,"@://");
//winform.editLog.print("urlTab[1]=",urlTab[1]);
if(urlTab[1]=="http"){
// 将部分内容写入窗口虚表中
winform.vlist.addRow("[@rowindex]","http",godking.sunny.getMsgType(msgtype),url);
}
if(urlTab[1]=="https"){
winform.vlist.addRow("[@rowindex]","https",godking.sunny.getMsgType(msgtype),url);
}
winform.vlist.ensureVisible(winform.vlist.count);
// 将图片请求进行替换
if msgtype==godking.sunny.msgType.http_request {
var request = godking.sunny.httpRequest(msgid);
var t = request.getAllHeaders("Content-Type")
import string
if ..string.find(url,"@@.jpg") or ..string.find(url,"@@.jpeg") or ..string.find(url,"@@.png"){
request.setUrl("http://chengxu.online/images/banner.gif")
}
}
}
sunny.callback_websocket = function(winform,id,msgid,msgtype,mod,url,pid){
// 注意:1、回调函数为线程函数;2、要重新引用godking.sunny
import godking.sunny;
// 将部分内容写入窗口虚表中
winform.vlist.addRow("[@rowindex]","websocket",godking.sunny.getMsgType(msgtype),url)
winform.vlist.ensureVisible(winform.vlist.count)
//WS
if msgtype==godking.sunny.msgType.ws_send {
var ws = godking.sunny.webSocket(msgid);
var t = ws.getBodyText();
winform.vlist.addRow("[@rowindex]","ws","发送数据",t)
winform.vlist.ensureVisible(winform.vlist.count)
t = t++"(已修改)";
ws.setBody(t);
}
if msgtype==godking.sunny.msgType.ws_received {
var ws = godking.sunny.webSocket(msgid);
var t = ws.getBodyText();
winform.vlist.addRow("[@rowindex]","ws","接收数据",t)
winform.vlist.ensureVisible(winform.vlist.count)
}
//WSS
if msgtype==godking.sunny.msgType.wss_send {
var ws = godking.sunny.webSocket(msgid);
var t = ws.getBodyText();
winform.vlist.addRow("[@rowindex]","wss","发送数据",t)
winform.vlist.ensureVisible(winform.vlist.count)
t = t++"(已修改)"
ws.setBody(t);
}
if msgtype==godking.sunny.msgType.wss_received {
var ws = godking.sunny.webSocket(msgid);
var t = ws.getBodyText();
winform.vlist.addRow("[@rowindex]","wss","接收数据",t)
winform.vlist.ensureVisible(winform.vlist.count)
}
}
winform.button.oncommand = function(id,event){
var isGlobal = winform.checkbox.checked;
winform.editLog.print("isGlobal=",isGlobal);
//start(2021/*代理端口*/,true/*请求过滤*/,true/*启动IE代理*/,winform/*传递窗口*/)
var result = sunny.start(2021,true,isGlobal,winform);
if (result){
..win.msgbox("已开启!",,,winform.hwnd);
}else{
..win.msgbox("开启失败!",,,winform.hwnd);
}
}
winform.button2.oncommand = function(id,event){
sunny.stop();
..win.msgbox("已停止!",,,winform.hwnd);
}
winform.onClose = function(hwnd,message,wParam,lParam){
sunny.stop();
}
winform.button3.oncommand = function(id,event){
//process.execute("http://coolaf.com/tool/chattest")
wb.go("http://coolaf.com/tool/chattest");
}
winform.button4.oncommand = function(id,event){
//process.execute("https://www.idcd.com/tool/socket")
wb.go("https://www.idcd.com/tool/socket");
}
winform.show();
win.loopMessage();
感谢群友:光庆 封装sunny.dll的aardio版用户库,使aardio也能写出一个fiddler.
感谢各位围观的萌新,正是你们渴望的眼神,让大佬们献出了金光闪闪的爱心.