24.07.2022, 08:14
Ich habe es jetzt mal angepasst sodass es für den Moment funktioniert:
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! :-)
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! :-)