2015年6.17号,在线旅游网站蚂蜂窝出现了抢粽子活动:页面会出现一些粽子,点击粽子,即抢到。很明显,这是一个重复性的劳动,可以代码自动刷新页面,点击页面上的粽子。

本方案中选择了开发一款Chrome浏览器插件进行前台页面刷新,后台点击粽子。

Chrome插件开发。

一、新建目录ChromeAddin-mafengwo。目录下新建名为manifest.json的入口文件。

manifest.json:

{
    "name": "picZongzi",
    "version": "1.0",
    "manifest_version": 2,
    "description": "自动抓取蚂蜂窝粽子",
    "browser_action": {
        "default_icon": "./images/icon.png",
        "default_title": "蚂蜂窝自动捡粽子"
    },
    "permissions": [
        "tabs",
        "https://*/*",
        "http://*/*"
    ],
    "content_scripts": [
        {
            "matches": ["*://*.mafengwo.cn/*"],
            "js": ["jquery-1.11.3.min.js", "mafengwo.js"]
        }
    ]
}

本文件主要声明了插件名称版本,监控的权限,网站,加载的文件。

二、实现后台处理文件。

我们发现蚂蜂窝的粽子主要是在一个class=“pickZongzi”的div中,只要发现页面中有改div,即可进行点击。

示例代码主要是从预定义列表中随机选择一个页面,加载该页面并检测是否有粽子,有即进行点击。2.5秒钟刷新一次页面。

具体业务逻辑如下:

mafengwo.js:

console.log("蚂蜂窝自动捡粽子,实时监控ing");
$(document).ready(function(){
    var sites = [
                 'http://www.mafengwo.cn/',
                 'http://www.mafengwo.cn/activity/zongzi2015.php?fromhead',
                 'http://www.mafengwo.cn/gonglve/',
                 'http://www.mafengwo.cn/mdd/',
                 'http://www.mafengwo.cn/wenda/',
                 'http://www.mafengwo.cn/sales/'
                 ]
    function GetRandomNum(Min,Max){
        var Range = Max - Min;
        var Rand = Math.random();
        return(Min + Math.round(Rand * Range));
    }
    function killZongzi(){
        var number = GetRandomNum(1,5);
        location.href = sites[number];
        var body = document.body.innerHTML;
        $(".pickZongzi").each(function(){
            $(this).click();
        });
        console.log('杀死粽子!');
    }
    setTimeout(killZongzi, 2500);
});

三、开发中的插件调试

浏览器输入:chrome://extensions/

勾选开发者模式,点击加载正在开发的扩展程序,选择插件目录。注意:代码修改一次,就要在此页面重新加载一次。

四、打包插件。

浏览器输入:chrome://extensions/

选择打包扩展程序,即可对插件打包成crx文件。

五、相关代码,移步:https://github.com/hxchen/ChromeAddin-mafengwo