Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Script läuft nicht auf neuer Seite?
#1
Hallo,
ich nutze Tampermonkey in chrome und wollte diesen Code nutzen:
Code:
// ==UserScript==
// @name         blabla
// @namespace    blabla
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match *
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
// @run-at        document-end
// @grant        none
// ==/UserScript==

$(document).ready(function(){

    let urlhier = location.href;
    const reggooglemain =/https?:\/\/(www\.)?google.de(\/)?/;
    const reggoogleres=/https?:\/\/(www\.)?google.de(\/)search\?q\=.*/;
    //https://www.google.de/search?q=abc

    if(urlhier.match(reggooglemain)){google();return;}
    if(urlhier.match(reggoogleres)){location.reload();googleres();return;}


    async function google(){
        var ranstring=getrandomstring();
        location.replace("https://www.google.de/search?q="+ranstring);
    };

    async function googleres(){
        var links=document.querySelectorAll("a[href]");
        var wind=null;

        for(let i=0;i<3;i++){
            console.log("links[i]="+links[i]);
            wind=window.open(links[Math.floor(Math.random()*links.length)].href);
            //loop for
            //sleep
            //scroll
            for(let i=0;i<4;i++){
                try{
                    wind.scrollTo(200, 0);
                    await sleep(300);
                    wind.scroll(0,0);
                }catch(e){}

            }
            wind.close();
        }

    };

}
                 );



function getrandomstring() {
    var h=Math.floor(Math.random()*9);
    var result = '';
    var charactersup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var characterslow='abcdefghijklmnopqrstuvwxyz';
    result = result+charactersup.charAt(Math.floor(Math.random() *
                                                   charactersup.length));

    for ( var i = 1; i < h; i++ ) {
        result += characterslow.charAt(Math.floor(Math.random() *
                                                  characterslow.length));
    }
    return result;
}

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}
Im Kern soll es Folgendes machen:
Falls die vorl,iegende Seite http://google.de ist, dann wechsle zur Seite mit gleicher URl und hinten einem /search?q=hierstehteinString dran.
kurz das,w as rauskommt wenn man in google nach was sucht.

Nun ruft mir das Skript zwar von der google hauptseite wi gewünscht auch eine passende Ergebnisseite auf, dort wird mir aber am Tampermonkeyzeichen angezeigt dass das Skript hier nicht angewendet wird bzw. überhaupt nicht anwendbar ist.

Aber woran liegt es?
Ich lasse es mit
Code:
//@match *
sprichwörtlich überall ausführen und der Regex Ausdruck sollte, hoffentlich , auch passen.

Woran scheitert es hier?

Und bitte, bitte, lass die Antwort nicht der "Same Origin Policy" Bullshit sein, wegen dem Mist vemreide ich shcon extra das simple window.open Undecided
Zitieren
#2
ich würde immer @match wegmachen und @include nutzen
in dein fall sogar
@include *google.de*
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#3
und wenn ich jetzt richtig sehe würde ich die function in das document.ready machen .
so
Code:
// ==UserScript==
// @name         blabla
// @namespace    blabla
// @version      0.1
// @description  try to take over the world!
// @author       You
// @include  *google.de*
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
// @run-at        document-end
// @grant        none
// ==/UserScript==

$(document).ready(function(){

    let urlhier = location.href;
    const reggooglemain =/https?:\/\/(www\.)?google.de(\/)?/;
    const reggoogleres=/https?:\/\/(www\.)?google.de(\/)search\?q\=.*/;
    //https://www.google.de/search?q=abc

    if(urlhier.match(reggooglemain)){google();return;}
    if(urlhier.match(reggoogleres)){location.reload();googleres();return;}


    async function google(){
        var ranstring=getrandomstring();
        location.replace("https://www.google.de/search?q="+ranstring);
    };

    async function googleres(){
        var links=document.querySelectorAll("a[href]");
        var wind=null;

        for(let i=0;i<3;i++){
            console.log("links[i]="+links[i]);
            wind=window.open(links[Math.floor(Math.random()*links.length)].href);
            //loop for
            //sleep
            //scroll
            for(let i=0;i<4;i++){
                try{
                    wind.scrollTo(200, 0);
                    await sleep(300);
                    wind.scroll(0,0);
                }catch(e){}

            }
            wind.close();
        }

    }

function getrandomstring() {
    var h=Math.floor(Math.random()*9);
    var result = '';
    var charactersup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var characterslow='abcdefghijklmnopqrstuvwxyz';
    result = result+charactersup.charAt(Math.floor(Math.random() *
                                                   charactersup.length));

    for ( var i = 1; i < h; i++ ) {
        result += characterslow.charAt(Math.floor(Math.random() *
                                                  characterslow.length));
    }
    return result;
}

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

})
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#4
(22.07.2022, 21:14)admin schrieb: und wenn ich jetzt richtig sehe würde ich die function in das document.ready machen .
so
Code:
// ==UserScript==
// @name         blabla
// @namespace    blabla
// @version      0.1
// @description  try to take over the world!
// @author       You
// @include  *google.de*
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
// @run-at        document-end
// @grant        none
// ==/UserScript==

$(document).ready(function(){

    let urlhier = location.href;
    const reggooglemain =/https?:\/\/(www\.)?google.de(\/)?/;
    const reggoogleres=/https?:\/\/(www\.)?google.de(\/)search\?q\=.*/;
    //https://www.google.de/search?q=abc

    if(urlhier.match(reggooglemain)){google();return;}
    if(urlhier.match(reggoogleres)){location.reload();googleres();return;}


    async function google(){
        var ranstring=getrandomstring();
        location.replace("https://www.google.de/search?q="+ranstring);
    };

    async function googleres(){
        var links=document.querySelectorAll("a[href]");
        var wind=null;

        for(let i=0;i<3;i++){
            console.log("links[i]="+links[i]);
            wind=window.open(links[Math.floor(Math.random()*links.length)].href);
            //loop for
            //sleep
            //scroll
            for(let i=0;i<4;i++){
                try{
                    wind.scrollTo(200, 0);
                    await sleep(300);
                    wind.scroll(0,0);
                }catch(e){}

            }
            wind.close();
        }

    }

function getrandomstring() {
    var h=Math.floor(Math.random()*9);
    var result = '';
    var charactersup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var characterslow='abcdefghijklmnopqrstuvwxyz';
    result = result+charactersup.charAt(Math.floor(Math.random() *
                                                   charactersup.length));

    for ( var i = 1; i < h; i++ ) {
        result += characterslow.charAt(Math.floor(Math.random() *
                                                  characterslow.length));
    }
    return result;
}

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

})

Ich habe es gerade mal ausprobiert.
für die google hauptseite läuft es.
Allerdings wenn er auf einer Ergebnissseit wie google.de/search?q=abc ist, dann führt er trotzdem den Hauptseitencode, also die google() Funktion aus.
Kann es sein, weil google.de/search?q=abc eben auch google.de enthält, dass es trotzdem den ersten regex im cod matcht?
obwohl dort ja hinter dem google.de/ laut regex nichts folgen dürfen sollte?

weil irgendwei shceinen die Ergebnisseiten mit dem google.de regexausdruck zu matchen, waurm auch immer O_o
Zitieren
#5
Ich habe es jetzt mal angepasst sodass es für den Moment funktioniert:
Code:
// ==UserScript==
// @name         blabla
// @namespace    blabla
// @version      0.1
// @description  try to take over the world!
// @author       You
// @include  *google.de*
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
// @run-at        document-end
// @grant        none
// ==/UserScript==

$(document).ready(function(){

    let urlhier = location.href;
    const reggooglemain =/https?:\/\/(www\.)?google.de(\/)?/;
    const reggoogleres=/https?:\/\/(www\.)?google.de(\/)search\?q\=.*/;
    //https://www.google.de/search?q=abc

    if(urlhier.match(reggoogleres)){googleres();return;}
    else if(urlhier.match(reggooglemain)){google();return;}


    async function google(){
        console.log("Inside google main function!");
        await sleep(3000);
        var ranstring=getrandomstring();
        location.replace("https://www.google.de/search?q="+ranstring);
    };

    async function googleres(){
        console.log("Inside google res function!");
        await sleep(3000);

        var divs=document.querySelectorAll("div[style='width:600px']");
        console.log("Es sind "+divs.length+" div Elemente da!");



        //<div class="g Ww4FFb tF2Cxc" lang="de" style="width:600px" data-hveid="CCAQAA" data-ved="2ahUKEwjh9JiI8Y_5AhVOiv0HHVzeBHkQFSgAegQIIBAA">

        var wind=null;

        for(let i=0;i<4;i++){
            wind=window.open(divs[Math.floor(Math.random()*divs.length)].querySelector("a[href]").href);
            await sleep(2000);
            //loop for
            //sleep
            //scroll
            for(let i2=0;i2<4;i2++){
                try{
                    console.log("scrolling....");
                    //scrolling not working
                    wind.scrollTo(200, 0);
                    await sleep(500);
                    wind.scrollTo(0,0);
                }catch(e){}
                await sleep(400);

            }
            wind.close();
            await sleep(2000);
        }

    }

    function getrandomstring() {
        var h=Math.floor(Math.random()*13);
        var result = '';
        var charactersup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        var characterslow='abcdefghijklmnopqrstuvwxyz';
        result = result+charactersup.charAt(Math.floor(Math.random() *
                                                       charactersup.length));

        for ( var i = 1; i < h; i++ ) {
            result += characterslow.charAt(Math.floor(Math.random() *
                                                      characterslow.length));
        }
        return result;
    }

    function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }

})

Aber das halt auch nur weil ich den spezielleren Regex zuerst benutzen lasse.

Irgendwie scheint es noch nicht so zu passen mit den Regex, weil irgendwann will ich ja bspw. 6 regex Ausdrücke da stehen haben und es soll nur genau ein Regex auch passen auf die aktuelle URL .

Und dass google.de/search?q=abc dann nicht den Regex für google.de UND den für google.de/search?q= triggert!'

Viellicht hatte ich auch das mit dem match() falsch verstanden, dass das das nicht so ganz genau match, sondern eher guckt ob der regex in der url als Teilstrin gvorkommt oder so...

Edit: nahc googlen: Yup, match() testet ob der regex einem Teil des Strings matched und gibt rigendwie eine Lsite an Resultaten zurück...
Habe jetzt die form regex.test(string) benutzt, damit funktioniert es endlich! :-)
Zitieren
#6
Habe jetzt die form regex.test(string) benutzt, damit funktioniert es endlich! :-)

Gut gemacht.
Solange es läuft und keine Fehler oder Sicherheitslücken erstellt, ist das ja in Ordnung.
Habe leider nicht ganz verstanden, was das Script machen soll.

Wenn google dann umleiten auf googel mit Suchstring der als Variable gespeichert wurde?
Wenn googel mit Suchstring, dann umleiten zu googel mit gespeicherten Variable. ?
Wenn google mit Suchstring aus der Variable entdeckt wurde, soll gar nichts passieren?
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#7
(24.07.2022, 22:14)admin schrieb: Habe jetzt die form regex.test(string) benutzt, damit funktioniert es endlich! :-)

Gut gemacht.
Solange es läuft und keine Fehler oder Sicherheitslücken erstellt, ist das ja in Ordnung.
Habe leider nicht ganz verstanden, was das Script machen soll.

Wenn google dann umleiten auf googel mit Suchstring der als Variable gespeichert wurde?
Wenn googel mit Suchstring, dann umleiten zu googel mit gespeicherten Variable. ?
Wenn google mit Suchstring aus der Variable entdeckt wurde, soll gar nichts passieren?

Eigentlich ganz simple Sache:
Ich will erst auf google gehen anfangs.
Von dort soll ich auf eine suchergebnisseite weitergeleitet werden (Der "Suchbegriff" wird einfahc random erzeugt).
Und auf der Suchergbenisseite werdn dann random links geklickt und wieder zugemacht.
Um einfahc zu simulieren dass ich google nutze ohne es zu nutzen.
einfach einen moment googeln simulieren
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste