脚本高手进~~来为维基百科捐点钱 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
vanvesee
V2EX    程序员

脚本高手进~~来为维基百科捐点钱

  •  
  •   vanvesee 2015-09-23 14:39:59 +08:00 5325 次点击
    这是一个创建于 3678 天前的主题,其中的信息可能已经有所发展或是发生改变。

    老婆所在公司( 100offer )目前正在举办一个活动,投票就给维基百科捐款(上限 10 万),目前才 2 万多。

    我发现了一个漏洞:

    照理来说投票类功能会根据 IP 啊、访问间隔啊吧啦吧啦做一些限制的,但仁慈的攻城狮显然是为了能够给维基百科予以最大的支持,所以这个限制很弱鸡!!

    只要每次投票后刷新页面,就可以再次投票啦。

    9.23 更新: 需要增加图片验证码识别及计算模块

    害得我都想写个脚本来自动刷票了,当然为了不影响投票结果的公平性,我觉得应该遍历所有参赛作品并投票, Hia~Hia~Hia~


    他们公司的 CEO 都说了可以拿 10 万出来,我觉得可以替维基百科『笑纳』。

    PM 已到位,思路清晰,只差程序员了。
    有没有志同道合的小伙伴? 感兴趣请留言。

    附上活动页面: http://i.100offer.com/projects

    第 1 条附言    2015-09-23 17:34:26 +08:00
    最初是当做娱乐来对待的,起因是从知乎看到如何给维基百科捐款的问题说起。
    不过 V2EX 上大家一溜的回复都认为是软文、水军... 我就稍微研究了下下。

    撇开活动内容不谈(原文已经无法编辑,部分人建议删除的内容恐怕实现不了),我只谈谈这几天的进展:

    9.21
    投票时发现可以重复投票,第一次投票不需要验证,第二次投票需要输入数字加减计算结果;
    另根据 @xfspace 提供的链接 t/222843 来看,提交逻辑可能也比较简单。

    9.22 也许官方发现了刷票太 Easy ,对投票逻辑进行变更:
    1 、第一次投票不变;
    2 、第二次投票通过 js 控制,必须通过表单提交;
    这点是导致脚本失效的原因。
    3 、提交成功后若不刷新页面,再次提交的话忽略处理。
    意味着刷新页面后可以再次投票。

    9.23 抽空研究了下前端逻辑,尝试捕获其它漏洞,发现出了个新措施:
    对于单一 IP 访问频次做了控制,导致频繁发起请求时返回 500 错误。
    有空再研究。

    (前几天没做过多技术研究,可能记得不太清楚)。
    第 2 条附言    2015-09-24 17:42:03 +08:00

    看到被指责某些行为的不当,我承认这不是我的本意。
    最初只是以戏谑的口气来说这事。其实在最初了解到会以投票形式进行评选时,我就提出了防刷票机制的想法,如果换做我,我会怎么来做?再站到对立面,我会如何来破解?

    随后又想到了验证码 vs 验证码识别、 Spam vs Anti-spam 、爬虫 vs 反爬虫 以及 图灵测试...( AI 科幻题材的美剧看多了)
    这些技术的发展互为因果,就像每年度都会举办的黑客大会,有许多新奇技术、手法的碰撞,也许在这攻与防的过程中,技术才会有更大的进步。

    之前在公司负责账户安全模块的设计和开发,恰好是 CSDN 等 IT 网站爆出密码明文存储牵扯到用户账户安全的时候。当时做的安全措施异常复杂,已经影响到普通用户的操作了,有些做法至今还能在其它产品中找到影子:
    1 、强制定期更改密码(如一个月);
    2 、最新密码不能与最近使用过的 5 个密码相似;
    3 、密码必须包含特殊字符,且满足一定的排列要求
    ......
    直接导致我常用的几个密码在一段时间后无法再次使用,新设置的密码又记不得,重置一次又一次,已经抓狂了。

    技术不应该成为影响用户体验的障碍。
    看到阿里的云舒在知乎说,他们最近正在研究如何取消验证码,我觉得这是一件很有意义的事情。

    过犹不及,但凡事皆需有度。


    哥玩 Moto 360 去了,有空回聊。

    27 条回复    2015-09-24 11:13:15 +08:00
    wdd2007
        1
    wdd2007  
       2015-09-23 14:43:51 +08:00
    感觉是 100offer 自己发的帖子。。
    xfspace
        2
    xfspace  
       2015-09-23 14:45:15 +08:00 via Android
    昨天有人发了个脚本,然并卵被补上了。
    个人观点:写得一手好软广~
    shuax
        3
    shuax  
       2015-09-23 14:48:29 +08:00
    花式打广告
    vanvesee
        4
    vanvesee  
    OP
       2015-09-23 14:59:18 +08:00
    @xfspace 真不是软广。 求脚本链接。
    xfspace
        5
    xfspace  
       2015-09-23 15:08:18 +08:00 via Android
    @vanvesee t/222843
    FFLY
        6
    FFLY  
       2015-09-23 15:15:08 +08:00
    怎么看都像是营销软文
    zts1993
        7
    zts1993  
       2015-09-23 15:21:04 +08:00
    老婆所在公司( 100offer )。。。看到这句总觉得不对。
    mcone
        8
    mcone  
       2015-09-23 15:27:35 +08:00
    楼主先把公司名字去掉再说事儿吧 分明就是一次不成熟的营销
    x4
        9
    x4  
       2015-09-23 15:32:45 +08:00 via Android
    拿着 vc 的钱大把的挥霍。唉。。。。
    lincanbin
        10
    lincanbin  
       2015-09-23 16:07:12 +08:00
    vanvesee
        11
    vanvesee  
    OP
       2015-09-23 16:53:17 +08:00
    研究了一下逻辑。。

    var arr = $("label").text().match(/\d+/g);
    var sum = parseInt(arr[0]) + parseInt(arr[1]);
    $("#humanizer_answer").val(sum);
    $("form").submit();

    准备加定时,发现服务器 500 错误了。。。
    a342191555
        12
    a342191555  
       2015-09-23 16:55:20 +08:00
    $("div").each(function(index,element){if(element&&element.attributes&&element.attributes[1]&&element.attributes[1].value&&element.attributes[1].value==295){element.nextElementSibling.children[0].click();text=document.getElementsByClassName("vote-frame")[1].children[2].children[1].innerHTML;a=text.substr(0,text.indexOf("加"));b=text.substr(text.indexOf("加")+1,text.length-text.indexOf("等于")-2);document.getElementById("humanizer_answer").value=parseInt(a)+parseInt(b);document.getElementsByClassName("vote-frame")[1].children[2].children[4].click()}});

    难看死了…为啥 500 了…
    surfire91
        13
    surfire91  
       2015-09-23 17:06:20 +08:00
    验证码只有 XXX 加 XXX 等于多少?
    lerry
        14
    lerry  
       2015-09-23 17:25:08 +08:00
    不用那么麻烦好吗?浏览器的话,清下 cookie 就可以继续投票了,脚本就更随意了。
    vanvesee
        15
    vanvesee  
    OP
       2015-09-23 18:01:06 +08:00
    @lerry 来个随意的脚本实现? 给俺学习下。
    vanvesee
        16
    vanvesee  
    OP
       2015-09-23 18:02:40 +08:00
    @a342191555 你的那段代码哪来的... 我这边看是 jquery 写的。
    500 错误应该是针对 IP 访问做了控制,我换 IP 后正常。
    chairuosen
        17
    chairuosen  
       2015-09-23 18:05:27 +08:00
    正文头两个字就在花式虐狗
    a342191555
        18
    a342191555  
       2015-09-23 18:16:06 +08:00
    @vanvesee 自己写的。。很烂。。模拟点击的动作…
    逻辑:遍历所有的 div ,如果一个 div 的 attributes[1]的 value 是 295 (追气球的熊孩子那个,我最喜欢:),点击下面的投票按扭,然后分析问题,把问题中的两个数提取出来相加,放到 humanizer_answer 里面去,最后模拟提交动作。。。
    赞你的高效脚本:)
    碎碎念,略:没学过 jQuery ,本科毕设时做过前端,对 JS 知道一点皮毛…
    lerry
        19
    lerry  
       2015-09-23 19:00:04 +08:00
    @vanvesee ip 限制的话只能上代理了
    xiaocui
        20
    xiaocui  
       2015-09-23 19:03:18 +08:00
    说了多少遍了 维基百科 不 ! 缺 ! 钱 !
    terence4444
        21
    terence4444  
       2015-09-23 19:15:31 +08:00 via iPhone
    最后捐不捐还不知道呢,又没有证据。
    leoss
        22
    leoss  
       2015-09-23 19:28:08 +08:00
    一个靠捐款维持正常运作的网站,没有不缺钱这个说法。
    vitovan
        23
    vitovan  
       2015-09-23 19:32:11 +08:00 via Android
    500miles
        24
    500miles  
       2015-09-23 20:18:05 +08:00
    10 万块引来一群人(最直接的目标客户)关注, 最关键是还能这群人不亦乐乎, 参与其中,,,,,

    这群人不断有人 show 脚本, 你们不断的家访, 你猛攻我受受 岂不爽哉?

    这广告创意谁想出来的? 太尼玛机智了...
    msg7086
        25
    msg7086  
       2015-09-24 01:39:34 +08:00
    顺便提一句。
    利用漏洞让企业给维基多捐钱的行为应该是违法的。不知道算不算的上盗窃,不过性质是一样的。
    SergioChan
        26
    SergioChan  
       2015-09-24 09:29:38 +08:00
    @msg7086 并且写脚本刷票还叫开源项目的评选么= =这不是脚本评选么
    xiaobetty
        27
    xiaobetty  
       2015-09-24 11:13:15 +08:00
    @terence4444 我们会将捐款截图、维基百科收到款项后的回复邮件公示出来
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2488 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 11:12 PVG 19:12 LAX 04:12 JFK 07:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86