有没有办法随机自动点击网页上的链接?

时间:2013-04-29 21:58:27

标签: javascript web greasemonkey

我正在测试一个通过激活代理来限制网站的软件。似乎有一个错误,代理只是停止工作,但只有在大约一两个小时的网上冲浪,或点击数百甚至数千个链接。

是否有现成的解决方案可以做到这一点?如果我能以这种方式解决问题,我也有兴趣编写解决方案。

我听说过firefox的greasemonkey插件,但我不熟悉javascript。有没有办法让javascript可以随机收集页面上的链接,然后随机打开其中一个链接?

1 个答案:

答案 0 :(得分:2)

听起来代理可能会有超过一小时(绝对)的会话超时或大约一小时的“无活动”。

撇开这是否是一个好的测试方法,这里是一个完整的Greasemonkey脚本点击随机链接:

// ==UserScript==
// @name     _YOUR_SCRIPT_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// ==/UserScript==

var timeDelaySeconds    = 2;

setInterval (clickRandomLink, timeDelaySeconds * 1000);

function clickRandomLink () {
    var links = document.querySelectorAll ("a");
    /*--- Or fine-tune the links to certain areas or types.  EG:
        var links = document.querySelectorAll ("#content a");
        var links = document.querySelectorAll ("a.comments");
        etc.
    */
    if (links.length) {
        var linkToClick = links[getRandomInt (0, links.length - 1) ];
        var clickEvent  = document.createEvent ('MouseEvents');

        clickEvent.initEvent ('click', true, true);
        linkToClick.dispatchEvent (clickEvent);
    }
}

function getRandomInt (min, max) {
    return Math.floor (Math.random () * (max - min + 1) ) + min;
}

它使用时间延迟来允许链接到AJAX-in。它使用querySelectorAll()来允许微调使用哪些链接,并发送实际的点击事件,因为这是触发大多数链接的最有效方式。