搜索
查看: 761|回复: 1

web.blink (miniblink) 拦截HTTP请求的方法

[复制链接]

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
发表于 2018-8-3 20:37:39 | 显示全部楼层 |阅读模式
下面的示例用到了新版功能,请先更新到最新版本,下面看代码:
import win.ui;
/*DSG{{*/
var winform = win.form(text="miniblink拦截HTTP请求";right=848;bottom=585)
/*}}*/

import web.blink.form;
var mb = web.blink.form(winform)

mb.onRequestBegin =
function(hRequest,url){
   
   
if (url== "http://tieba.baidu.com/") {
        
        
//拦截方法一:直接修改数据。
        mb.requestSetMimeType(hRequest, "text/html");
        mb.requestSetData(hRequest,
'<html><body>onRequestBegin拦截方法一已成功修改数据,请按退格键返回前一页.</body></html>')
        
return true;//返回true中止默认请求
    }
   
elseif (url== "http://xueshu.baidu.com/") {
        
        
//拦截方法二:暂时中止请求
        mb.requestHold(hRequest);
        
        
//创建线程
        thread.invoke(
            
function(mb,hRequest){
               
sleep(1000);
               
               
//异步修改数据
                mb.requestSetMimeType(hRequest, "text/html");
                mb.requestSetData(hRequest,
'<html><body>多线程异步修改请求数据,请按退格键返回前一页.</body></html>');
               
               
//然后再让请求继续执行
                mb.requestContinue(hRequest)
            },mb,hRequest
        )
        
        
return true;//返回true中止默认请求,这个不写也可以
    }   
   
elseif (url== "http://map.baidu.com/") {
        
        
//拦截方法三:继续默认的远程请求,但是请求结束触发onRequestEnd
        mb.hookOnRequestEnd(hRequest);
    }   
}

//这是响应拦截方法三产生的回调,服务端返回数据以后在这里可以修改数据
mb.onRequestEnd = function(hRequest,url,dataPtr,size){
   
   
//获取服务器返回的数据
    var buffer = raw.buffer(size,dataPtr);
   
   
//返回修改后的数据
    return "onRequestEnd修改了数据,请按退格键返回前一页.";
}

mb.go(
"http://www.baidu.com");
winform.show();

mb.waitQueryEles(
"a",{innerText = "贴吧"}).innerText = "贴吧(点这里测试onRequestBegin事件)"
win.loopMessage();

回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
 楼主| 发表于 2018-8-3 20:40:19 | 显示全部楼层

miniblink自定义区域语言(拦截请求增加HTTP请求头的例子)


import win.ui;
/*DSG{{*/
var winform = win.form(text="miniblink自定义区域语言";right=1213;bottom=743)
/*}}*/

import web.blink.form;
var mb = web.blink.form(winform)

mb.onRequestBegin =
function(hRequest,url){
   
/*
    自定义HTTP请求头中请求的区域语言,
    miniblink已经默认添加了Accept-Language: zh-CN,zh;q=0.8
    其中q是权重,这个值很重要。miniblink并不覆盖原来的请求头而是直接添加,这里我们需要把q指定为更小的值。
    */

    mb.requestSetRequestHeader(hRequest,
"Accept-Language","zh-TW,tw;q=0.1");
   
}

//打开网页
mb.go("http://www.bing.com")
winform.show();

win.loopMessage();

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-10-20 04:18 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表