代码之家  ›  专栏  ›  技术社区  ›  mdhz

导航到随机URL的Javascript

  •  1
  • mdhz  · 技术社区  · 8 年前

    我正在尝试为一个论坛编写一个用户脚本,我要求它随机导航到不同的URL。

    基本的想法是,我想大部分时间都在线,以增加我的在线时间。经过一段时间的不活动(假设5分钟),论坛将不会增加到在线花费的时间。

    那么,我如何编写javascript代码来导航到论坛中的不同URL呢。

    这是论坛线程的格式: 某处。xxx/显示线程。php?tid=xxxxxxx 所以脚本应该访问一些随机线程(比如0123456),等待5分钟,然后访问下一个随机线程(比如1123456),并保持循环重复。

    我试过这个:

    setTimeout(function() {
        location.href = "somesite.xxx/showthread.php?tid=4128749";
    }, 10000);
    
    setTimeout(function() {
        location.href = "somesite.xxx/showthread.php?tid=5128749";
    }, 10000);
    
    setTimeout(function() {
        location.href = "somesite.xxx/showthread.php?tid=3128749";
    }, 10000);
    

    但是我不能一直添加所有无数的URL,而且上面的代码也不起作用,像somesite一样不断附加站点URL。xxx/某地。xxx/。。。

    3 回复  |  直到 8 年前
        1
  •  1
  •   Xhynk    8 年前

    嗯,您需要以某种方式生成URL列表。无论是来自API、PHP还是JavaScript数组、文本文件,等等。否则,您必须生成一个随机的7位数,并希望成功。

    获得线程列表后,将其转换为一个数组,然后随机选取一个,然后运行setTimeout函数(该函数缺失 window. 之前 location )

    var threads = ['4128749', '5128749', '3128749', ...];  
    var random  = threads[Math.floor(Math.random() * threads.length)];
    
    setTimeout(function(){
        window.location.href = 'http://somesite.xxx/showthread.php?tid=' + random;
    }, 10000);
    

    如果您不关心未命中,或者您知道所有7位数字都将导致一个线程,那么您可以随机生成数字,然后将位置设置为该位置。

    //Generate random 7 digit number
    var random  = Math.floor(Math.random()*9000000) + 1000000;
    
    setTimeout(function(){
        window.location.href = 'http://somesite.xxx/showthread.php?tid=' + random;
    }, 10000);
    
        2
  •  1
  •   Saba    8 年前

    使用 setInterval 而不是 setTimeout 当它执行函数时 作为参数重复传递。

    const timeout = 300000;
    
    setInterval(function () {
        const sevenRandom = Math.floor(100000 + Math.random() * 9000000);
        const windowHandle = window.open('somesite.xxx/showthread.php?tid=' + sevenRandom, '_blank');
    
        setTimeout(function () {
            windowHandle.close();
        }, timeout);
    }, timeout);
    

    将上面的代码片段粘贴到浏览器的控制台中,每隔五分钟它就会在新选项卡中打开您的URL。它还将关闭以前打开的选项卡,以避免打开大量选项卡。

    注意:避免将其用于任何类型的垃圾邮件,并且仅用于真正的目的。

        3
  •  0
  •   Sajib Khan    8 年前

    比如说,您有一个HREF数组。e、 g.hrefArray=[href1,href2,…]。现在,您可以通过HREF进行循环。

    const hrefArray = ['somesite.xxx/showthread.php?tid=4128749', 'somesite.xxx/showthread.php?tid=5128749'];
    const len = hrefArray.length;
    
    for (let i = 0; i < len; i++) {
      setTimeout(function() {
        location.href = hrefArray[i];
      }, (Math.floor(Math.random() * i) + 1000);
    }