antibot-server接入說明

title: antibot-server接入說明

date:2016-05-05

tags:


1、對于已使用ng-common-0.4.31 RPC的接入方

1.1拉岁、新增配置項(xiàng)
1.1.1、在define.conf中

# RPC本地調(diào)試時(shí)的antibot_server地址-開發(fā)時(shí)用到
antibot_server.test=http://100.84.51.184:9027

#調(diào)用antibot_server的caller&key族跛,無需配置弛作,配置好rpc.caller和rpc.key即可

1.1.2愕提、在application.conf中

antibot_server.test.host=${antibot_server.test}

1.2、引入jar包

引入antibot-server-api-xxx.jar皿哨,其中xxx是版本號浅侨。
antibot-server-api-xxx.jar當(dāng)前還沒有上傳到nexus庫,如需最新版本证膨,請找我要如输。

1.3、示例:業(yè)務(wù)方頁面接入ua.js

在頁面最底部(body結(jié)束之前)央勒,加入如下代碼片段:

    <body>
    <!--頁面主體及業(yè)務(wù)js-->
    <script>
    var UA_Opt={Flag:16676992};//ua.js的配置
    function (doc, tagName, tagId, src) {
                a = doc.createElement(tagName);
                m = doc.getElementsByTagName(tagName)[0];
                a.async = 1;
                a.id = tagId;
                a.src = src;
                m.parentNode.insertBefore(a, m);
          }(document, 'script', 'uajs', "/ua.js?siteId=<你的siteId>");
    </script>
    </body>

在發(fā)起業(yè)務(wù)請求時(shí)不见,獲取ua密文;在complete時(shí)崔步,切換token稳吮。例如:

    $.ajax({
        type: "POST", 
        url: that.user.upCoinsUrl,
        data: {
             uid: uid, 
             shareId: shareId, 
             coins: coinsBuilt, 
             ua:UA_Opt.getUA() //字段名通常是ua,與第4步中從Reqeust.current()中獲取的參數(shù)名保持一致即可
        }, 
        complete:function(){
            UA_Opt.reload(true); //異步地切換token
        }
        dataType: "json", 
        timeout: 30000
        //其他屬性...
    });
1.4井濒、示例:業(yè)務(wù)方服務(wù)器調(diào)用評估風(fēng)險(xiǎn)接口
    /**
     *  測試antibot_server提供的接口
     */
    public static void antibotEstimate(){
        
        Request req = Request.current();
        String uaCipher = req.param.get("ua");
        if(StringUtils.isEmpty(uaCipher)){
            // ua密文不存在灶似,高風(fēng)險(xiǎn),請?zhí)幚?            ResponseHelper.sendError(...);
        }
        RuleApiService ruleServ = RPC.look(RuleApiService.class);
        RuleEstimateRequest req = new RuleEstimateRequest();
        req.setUaCipher(uaCipher);
        req.setRules(buildRules("dafde23ccde0a"));
        try{
            RuleEstimateResponse resp = ruleServ.estimate(req,"?siteId=<你的siteId>");
            int riskLevel = resp.getRiskLevel();
            if(riskLevel>=4){
                //高風(fēng)險(xiǎn)
            }
        }catch(ApiException e){
            //處理業(yè)務(wù)參數(shù)錯誤瑞你,業(yè)務(wù)碼說明請參見接口描述文檔
            int errCode = e.getErrorCode();
            if(errCode==RuleStatusCode.DECODE_FAILURE.getCode()){
                //解碼失敗酪惭,可視為高風(fēng)險(xiǎn)
            }else{
                //多半是請求參數(shù)有問題,請調(diào)整
            }
        }catch(RpcException e){
            //處理rpc調(diào)用出錯(如調(diào)用超時(shí))
        }       
    }
    
    /** 構(gòu)造規(guī)則
     * @param submitBtnId 提交按鈕的id
     * @return List<Rule> 
     */
    private static List<Rule> buildRules(String submitBtnId){
        return Arrays.asList(new Rule[]{
            new Rule(COND.TOKEN),//頁面token合法
            new Rule(COND.BROWSER_PLATFORM),//瀏覽器平臺APP特征合法
            new Rule(COND.TAP_TARGET,OP.EQ, submitBtnId),//提交按鈕的點(diǎn)擊事件
            new Rule(COND.FOCUS,OP.EXIST),//存在焦點(diǎn)事件
            new Rule(COND.BLUR,OP.EXIST),//存在失焦事件
            new Rule(COND.TAP_INTERVAL,OP.GE,"15"),//按下抬起間隔>=15ms
            new Rule(COND.LOCATION,OP.MATCH,"http://wanke.9game.cn/xxx/comment"),//發(fā)出請求的頁面的地址格式滿足正則表達(dá)式
            new Rule(COND.PAGE_STAY,OP.GE,"2000")//頁面停留時(shí)間最少2000ms
        });
    }
1.5者甲、業(yè)務(wù)方后臺請求ua.js及token

當(dāng)部署結(jié)構(gòu)滿足下圖時(shí)春感,只需上述四步即可完成接入:


antibot_server應(yīng)用示例

但,當(dāng)運(yùn)維不支持將antibot_server直接對外提供/ua.js和/utk時(shí)过牙,只能通過業(yè)務(wù)方web后臺(即圖中wk_web)向antibot_server轉(zhuǎn)調(diào)這兩個(gè)接口甥厦,并將結(jié)果返回給瀏覽器。這種情況下寇钉,業(yè)務(wù)方web后臺需要再寫兩個(gè)方法刀疙,用于響應(yīng)瀏覽器的/ua.js和/utk請求,代碼如下:

public class UajsController extends Controller {
    private static UajsApiService uajsServ = RPC.look(UajsApiService.class);
    /**
     * 響應(yīng)ua.js
     * 
     * @param siteId
     *            業(yè)務(wù)方站點(diǎn)id
     * @param siteId
     *            void
     */
    @UnneedAccountSdkHandle
    @NoUcidPretreat
    @DisableBeforeCache
    public static void serveUajs(String siteId) {
        Map<String,Object> resp = uajsServ.getUajs(buildSearchStr(siteId));
        String jsContent = (String)resp.get("content");
        throw new RenderJS(jsContent);
    }

    static class RenderJS extends Result {
        String text;
        public RenderJS(CharSequence text) {
            this.text = text.toString();
        }
        public void apply(Request request, Response response) {
            try {
                jws.Logger.debug("[UajsController RenderJS] apply...");
                setContentTypeIfNotSet(response, "application/javascript; charset=utf-8");
                response.out.write(text.getBytes("utf-8"));
                jws.Logger.debug("[UajsController RenderJS] apply finished.");
            } catch (Exception e) {
                throw new UnexpectedException(e);
            }
        }
    }

    /**
     * 響應(yīng)頁面token請求
     * 
     * @param siteId
     *            業(yè)務(wù)方站點(diǎn)id 生成動態(tài)token
     */
    @UnneedAccountSdkHandle
    @NoUcidPretreat
    @DisableBeforeCache
    public static void serveToken(String siteId) {
        throw new RenderText(uajsServ.getToken(buildSearchStr(siteId)));
    }
    
    private static String buildSearchStr(String siteId){
        if(StringUtils.isNotBlank(siteId)){
            return String.format("?siteId=%s", siteId);
        }else{
            return "";
        }
    }
}

同時(shí)扫倡,需要再業(yè)務(wù)方web后臺的routes中谦秧,新增如下配置:

GET        /ua.js            UajsController.serveUajs
GET        /utk              UajsController.serveToken
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市撵溃,隨后出現(xiàn)的幾起案子疚鲤,更是在濱河造成了極大的恐慌,老刑警劉巖缘挑,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件集歇,死亡現(xiàn)場離奇詭異,居然都是意外死亡语淘,警方通過查閱死者的電腦和手機(jī)诲宇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門际歼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姑蓝,你說我怎么就攤上這事鹅心。” “怎么了纺荧?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵旭愧,是天一觀的道長。 經(jīng)常有香客問我宙暇,道長输枯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任客给,我火速辦了婚禮用押,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘靶剑。我一直安慰自己蜻拨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布桩引。 她就那樣靜靜地躺著缎讼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坑匠。 梳的紋絲不亂的頭發(fā)上血崭,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機(jī)與錄音厘灼,去河邊找鬼夹纫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛设凹,可吹牛的內(nèi)容都是我干的舰讹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼闪朱,長吁一口氣:“原來是場噩夢啊……” “哼月匣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奋姿,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤锄开,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后称诗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萍悴,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了癣诱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片任岸。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狡刘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情困鸥,我是刑警寧澤嗅蔬,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站疾就,受9級特大地震影響澜术,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜猬腰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一鸟废、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姑荷,春花似錦盒延、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至懈费,卻和暖如春计露,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背憎乙。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工票罐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泞边。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓该押,卻偏偏與公主長得像,于是被迫代替她去往敵國和親繁堡。 傳聞我的和親對象是個(gè)殘疾皇子沈善,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)椭蹄,斷路器闻牡,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,770評論 25 707
  • 體育測試 七、八绳矩、九年級測試成績所占比例為3:3:4罩润,即:七年級12分,八年級12分翼馆,九年級16分割以。 具體計(jì)算方法...
    guru200閱讀 203評論 0 2
  • 早 昨晚吃的拌面 一點(diǎn)不好吃 再也不吃了 慢慢那種不適合的感覺出現(xiàn)了 莫名其妙 一天可以經(jīng)歷四季
    做一杯冷靜得水閱讀 73評論 0 0
  • 溺愛成癮(上) 1金度、 他們一貫都是好脾氣的,尤其年齡最小那個(gè)严沥,那次見他們有口角卻是在大家都無心的情況下猜极,進(jìn)門的時(shí)候...
    ATom480e閱讀 406評論 0 0