Firefox Addon schreiben

Hallo,
ich wollte mal Fragen, ob mir jemand helfen kann, ein Firefox Addon zu schreiben.
Das Skript sollte folgende Funktionalität haben:
Jedes Mal wenn ich eine Seite aufrufe, sollen alle Toplevel-Domains gefiltert werden und dann soll eine bestimmte Url aufgerufen werden.

Falls jemand sowas kann, kann er sich ja bittehier melden und mir sagen, was er als gegenleistung haben möchte.

Liebe Grüße,
Sebastian

bump

wo kann ich denn nachfragen, ob jemand sowas macht?

edit:
vielleicht kann man ja sowas mit greasemonkey realisieren…
kann jemand das vielleicht??

hey,

greasemonkey ist doch soweit ich weiß “nur” javascript … vill. kannst da floppy mal fragen der hat dadrüber auch son zähler für bplaced und square7 realisiert wenn ich mich richtig erinner… alternativ kannst du auch mal bisschen genauer beschreiben was du willst villt. kann ich dir auch helfen, verstehe aber aktuell nicht so ganz was du willst xD

lg flo

Vielleicht solltest du mal im Mozilla-Board anfragen :wink: Da tummeln sich sicher auch Freaks und Entwickler :slight_smile:

Per Scriptish/Greasemonkey ist das eine Frage von ein paar Zeilen. Was genau willst du denn erreichen?

also:
ich möchte von jeder seite die ich aufrufe, alle links auslesen und aus den links möchte ich dann die toplevel domains auslesen.
für jede ausgelesene toplevel domain (also abc.de z.b.) soll dann eine url mit get parameter aufgerufen werden (bsp: example.de/skript.php?abc.de)

joa das isses eigentlich :stuck_out_tongue:

Hi,

probier doch das z.b. mal so (auf selfhtml gefunden und bissal geändert)

<script type="text/javascript"> var derSatz = "<a href='http://forum.bplaced.net/index.php"; var Suche = /href='(\w*)'/gi; var Ergebnis; document.write("<ol>"); while (Ergebnis = Suche.exec(derSatz)) { document.write("<li>" + Ergebnis[1] + "<\/li>"); } document.write("<\/ol>"); </script>

Obs klappt weiß ich nicht habs nicht getestet. Aber du musst ggf. des 2 mal durchführen oder noch weiter ändern damit auch " & ’ klappt.

lg flo

//edit: So funktionierts schon mal das du aus dem String die Links (leider mit " oder ’ davor) aufgelistet bekommst

<script type="text/javascript"> var derSatz = "<a href='http://forum.bplaced.net/index.php"; var Suche = /href=(\S*)/g; /*/href=(\w*)( /gi;*/ var Ergebnis; document.write("<ol>"); while (Ergebnis = Suche.exec(derSatz)) { document.write("<li>" + Ergebnis[1] + "<\/li>"); } document.write("<\/ol>"); </script>

und wie mache ich das, dass das skript in greasemonkey läuft?
außerdem sollten alle links ausgelesen werden :stuck_out_tongue:
ich hab von js nich so viel ahnung :smiley:

Hi,

hab grad schnell was gemacht … einfach so in greasemonkey n neues script erstellen (und dann auf grojer.square7.ch/test2.html surfen)

[code]// ==UserScript==
// @name Test
// @namespace javascript
// @include http://grojer.square7.ch/test2.html
// ==/UserScript==

// ######################################################################
// # Links auslesen #
// # http://florian-grojer.bplaced.net/ #
// # Version: 1.0, 10.03.2012 #
// # Autor: Florian Grojer, 10.03.2012 #
// ######################################################################

//Quelle:
//http://de.selfhtml.org/javascript/objekte/regexp.htm#exec

var derSatz = window.document.body.innerHTML;
var Suche = /href="(\S*)"/g; //Für Links xx
var Suche2 = /href=’(\S*)’/g; //Für Links xx
var Suche3 = /href=(\S*) /g; //Für Links xx
var Ergebnis;

while (Ergebnis = Suche.exec(derSatz)) {
alert(Ergebnis[1]);
}
while (Ergebnis = Suche2.exec(derSatz)) {
alert(Ergebnis[1]);
}
while (Ergebnis = Suche3.exec(derSatz)) {
alert(Ergebnis[1]);
}[/code]

gibt erst mal alle links aus … hab jetz aber keine zeit mehr heute abend kann ich weiter machen wenn du willst

lg flo

sehr schön.
wenn du noch was hast poste es einfach.

(ich hätte da auch noch ein paar ideen, die noch eingebaut werden sollten, falls du zeit und lust hast mir zu helfen :slight_smile: )

Hi,

meld dich doch mal bei mir per skype

lg flo

Und hier ein kleines Beispielskript für Scriptish:

[code]// ==UserScript==
// @id AllDomains@progandy.de
// @name All Domains
// @version 1.0
// @namespace progandy.de
// @author ProgAndy
// @description Reads all Domains from the site
// @include http://forum.bplaced.net/viewtopic.php*
// @run-at document-end
// ==/UserScript==

var links = GM_xpath({
path: “//a/@href”,
all: true
});

var Filter = /://([^/]+)/; // Filter für alle Domainnamen
var domains = {} // Objekt, das alle Domains speichert
for (var i = 0, e = links.length; i < e; ++i) {
var domain = Filter.exec(links[i].value);
domain = (domain === null) ? ‘./’ : domain[1];
domains[domain] = (domains[domain] === undefined) ? 1 : domains[domain]+1;
}

var msg=“Found following Domains (Anzahl):\n\n”;
for (var key in domains) {
msg += key + " (" + domains[key] + “)\n”
}
alert(msg);[/code]

Hi,

da wir jetz des meiste in skype geklärt haben für user die ein ähnliches vorhaben haben hier der Quelltext:

Greasemonkey JS Code (Domain wohin die URL’s geschickt werden sollen anpassen!):

[code]// ==UserScript==
// @name Links auslesen & speichern
// @namespace javascript
// @description Liest die alle Links der Seite aus und sendet sie an einen Server
// @include *
// ==/UserScript==

// ######################################################################
// # Links auslesen & speichern #
// # http://florian-grojer.bplaced.net/ #
// # Version: 1.6, 10.03.2012 #
// # Autor: Florian Grojer, 10.03.2012 #
// ######################################################################

//Quelle:
//http://de.selfhtml.org/javascript/objekte/regexp.htm#exec

var anzahl = window.document.links.length;
var i = 0; // Zählvariable
var e = ‘’; // Ergebnisvariable
while(i < anzahl) {
e = e + window.document.links[i].href + “\n”;
i++;
}

function send(e) {
var xmlHttp = new XMLHttpRequest(); //XMLHttpRequest erstellen für standardkonforme Browser
//IE kann vernachlässigt werden da nur für Firefox
xmlHttp.onreadystatechange = function() { // wenn sich der Status der Anfrage ändert
if(xmlHttp.readyState == 4) { // Anfrage komplett
if(xmlHttp.status == 200) { // Anfrage erfolgreich

     }
  }

}

e = “datenurl=” + encodeURIComponent(e);
xmlHttp.open(“POST”, “http://DOMAIN.TLD/auswertungtest.php”, true);
xmlHttp.setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);
xmlHttp.setRequestHeader(“Content-length”, e.length);
xmlHttp.setRequestHeader(“Connection”, “close”);
xmlHttp.send(e);
}
send(e);
[/code]

Auswertende PHP Datei:

[code]<?php

// ######################################################################
// # Links auslesen & speichern #
// # http://florian-grojer.bplaced.net/ #
// # Version: 1.5, 10.03.2012 #
// # Autor: Florian Grojer, 10.03.2012 #
// ######################################################################

// Quelle: http://php.net/manual/de/function.preg-match.php Beispiel 3

//define(“URL”, “ALL”); // Komplette Links speichern
define(“URL”, “HOST”); // Nur Domain speichern (z.b.: bplaced.net)
if(URL == ‘HOST’) {
$zeile = explode("\n", $_POST[‘datenurl’]);
$anzahl = count($zeile) -1 -1;
$i = 0;
$s = ‘’;
while($i <= $anzahl) {
// den Hostnamen aus URL holen
preg_match(’@^(?:http://)?([^/]+)@i’,$zeile[$i], $treffer);
$host = $treffer[1];
// die letzten beiden Segmente aus Hostnamen holen
preg_match(’/[^.]+.[^.]+$/’, $host, $treffer);
//echo “Der Domänen-Name lautet: {$treffer[0]}\n”;
$s .= $treffer[0] ."\n";
$i++;
}
} else if(URL == ‘ALL’) {
$s = $_POST[‘datenurl’];
}
$datei = fopen(“auswertungtest.txt”,“a+”);
fwrite($datei, $s);
fclose($datei);
?>
[/code]

lg flo

//edit: JS Code abgeändert nach Erweiterungen von lenz

jup :slight_smile:
vielen dank nochmal.

liebe grüße,
sebastian

edit: ach ja, ich musste das skript noch ein bisschen verändern, da ajax sonst nicht alles geschickt hat.
falls das jemanden interessiert, einfach melden :stuck_out_tongue:

Hi,

ja poste doch bitte mal was du noch verändert hast

lg flo

[code]// ==UserScript==
// @name Domain Crawler
// @namespace http://sebastian-christoph-lenz.de
// @include *
// @include http://*
// @include https://*
// @run-at document-end
// ==/UserScript==

var anzahl = window.document.links.length;
var i = 0; // Zählvariable
var e = ‘’; // Ergebnisvariable
while(i < anzahl) {
e = e + window.document.links[i].href + “\n”;
i++;
}

function send(e) {
var xmlHttp = new XMLHttpRequest(); //XMLHttpRequest erstellen für standardkonforme Browser
//IE kann vernachlässigt werden da nur für Firefox
xmlHttp.onreadystatechange = function() { // wenn sich der Status der Anfrage ändert
if(xmlHttp.readyState == 4) { // Anfrage komplett
if(xmlHttp.status == 200) { // Anfrage erfolgreich

		}
	}
}

e = "datenurl=" + encodeURIComponent(e);
//alert(e);
xmlHttp.open("POST", "http://www...", true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", e.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(e);

}
send(e);[/code]

und ich hab auch noch ein zweites geschrieben, das alles was sonst noch nach domain aussieht auch ausliest:

[code]// ==UserScript==
// @name Domain Crawler 2
// @namespace http://sebastian-christoph-lenz.de
// @include *
// @include http://*
// @include https://*
// @exclude http://phpMyAdmin
// @exclude https://phpMyAdmin
// @run-at document-end
// ==/UserScript==

function array_unique(ar){
if(ar.length && typeof ar!==‘string’){
var sorter = {};
var out = [];
for(var i=0,j=ar.length;i<j;i++){
if(!sorter[ar[i]+typeof ar[i]]){
out.push(ar[i]);
sorter[ar[i]+typeof ar[i]]=true;
}
}
}
return out || ar;
}

var content = window.document.body.innerHTML;
content = content.replace(/.(de|net|com|org)([\w-]+).(de|net|com|org)/gi, " $1$2.$3.$4");

var matches = content.match(/([\w-]+).(de|net|com|org)+/gi);
var anzahl = matches.length;

for(var i = 0; i < anzahl; i++)
{
help = matches[i];
matches[i] = help.toLowerCase();
}

matches = array_unique(matches);
var anzahl = matches.length;
var i=0;
var e = ‘’;

while(i < anzahl) {
e = e + matches[i] + “\n”;
i++;
}

alert(e);

function send(e) {
var xmlHttp = new XMLHttpRequest(); //XMLHttpRequest erstellen für standardkonforme Browser
//IE kann vernachlässigt werden da nur für Firefox
xmlHttp.onreadystatechange = function() { // wenn sich der Status der Anfrage ändert
if(xmlHttp.readyState == 4) { // Anfrage komplett
if(xmlHttp.status == 200) { // Anfrage erfolgreich

		}
	}
}

e = "datenurl=" + encodeURIComponent(e);
//alert(e);
xmlHttp.open("POST", "http://www...", true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", e.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(e);

}
//send(e);[/code]