yacysearch.rss und urlmaskfilter

Hier finden YaCy User Hilfe wenn was nicht funktioniert oder anders funktioniert als man dachte. Bei offensichtlichen Fehlern diese bitte gleich in die Bugs (http://bugs.yacy.net) eintragen.
Forumsregeln
In diesem Forum geht es um Benutzungsprobleme und Anfragen für Hilfe. Wird dabei ein Bug identifiziert, wird der thread zur Bearbeitung in die Bug-Sektion verschoben. Wer hier also einen Thread eingestellt hat und ihn vermisst, wird ihn sicherlich in der Bug-Sektion wiederfinden.

yacysearch.rss und urlmaskfilter

Beitragvon markus » Do Mär 24, 2011 4:10 pm

Hallo,

ich versuche, mittels yacysearch.rss und PHP (MagpieRSS, wem das was sagt) Suchergebnisse in eine Web-Seite einzubinden. Dafür nutze ich folgenden Aufruf:
Code: Alles auswählen
$rss = fetch_rss('http://localhost:8080/yacysearch.rss?query='.$query.'&maximumRecords='.$maximumrecords.'&verify=ifexist'.'&urlmaskfilter='.$urlmaskfilter);

Nun möchte ich gern, weil die Suche auf bestimmte Bereiche der Web-Seite eingeschränkt werden soll, den URLmaskfilter korrekt setzen. Hier stoße ich aber auf Probleme, denn ich bekomme immer keine Suchergebnisse und im Ausgabe-Array folgendes:
Code: Alles auswählen
[link] => http://localhost:8080/yacysearch.html?query=testwort&resource=local&contentdom=text&verify=-UNRESOLVED_PATTERN-

Mein Problem ist vermutlich, dass ich nicht weiß, wie ich für https://www.example.com/path/sub/.* den regulären Ausdruck richtig übergebe. Versucht habe ich es mit
Code: Alles auswählen
$urlmaskfilter = "https://www\.example\.com/path/sub/.*";

Dies führte jedoch nicht zum gewünschten Ergebnis. Weiß jemand weiter? URLmaskfilter, die keine Punkte oder Schrägstriche enthalten, funktionieren, nur nützt mir das leider nicht.

Gruß aus Norddeutschland
Markus
markus
 
Beiträge: 11
Registriert: Do Aug 27, 2009 1:53 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon Low012 » Do Mär 24, 2011 4:35 pm

Dass reguläre Ausdrücke bei dir nicht funktionieren, könnte daran liegen, dass du den URL-String nicht entsprechend kodierst. Wenn du den String noch durch urlencode jagst, bevor du die Anfrage los schickst, sollte es funktionieren, wenn das MagpieRSS nicht sowieso schon von sich aus macht.

Wenn das nicht hilft, müsste ich den entsprechenden Code in YaCy checken. Ich habe da vorgestern was geändert und kann nicht ausschließen, dass ich da was kaputt gemacht habe.

Edit: Ich glaube, du musst nur den regulären Ausdruck mit urlencode behandeln, nicht den gesamten String. Sonst könnte es wieder andere Probleme geben, je nachdem wie urlencode implementiert ist. (Ich kenne mich mit PHP nicht besonders gut aus.)
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon Lotus » Do Mär 24, 2011 9:07 pm

Alle values (In der Adresse: [...]&key=value[...]) mit urlencode zu behandeln kann sehr viele potentielle Fehler beseitigen. Ist also ein wertvoller Tip.
Ich würde im obigen Code $query und $urlmaskfilter damit ausrüsten.
Lotus
 
Beiträge: 1699
Registriert: Mi Jun 27, 2007 3:33 pm
Wohnort: Hamburg

Re: yacysearch.rss und urlmaskfilter

Beitragvon Quix0r » Do Mär 24, 2011 9:39 pm

Bei solch "komplexen" Daten empfielt sich eher POST als GET, da dort die Daten im Body stehen und nicht in der "Adresszeile". Auch aus datenschutzrechtlichem Hintergrund sollten die Daten eher mit POST an den Peer uebersandt werden (falls YaCy da transparent ist), da die POST-Daten eigentlich nicht geloggt werden, GET-Daten hingegen koennten in Internet-Proxies geloggt werden (siehe Vorratsdatenspeicherung usw.).

Wenn das nicht geht, so habe ich mit urlencode() nur bedingt gute Erfahrungen gemacht. Sind die Daten naemlich wirklich sehr komplex (z.B. Umlaute, UTF-8 usw.) so konnte ich das Problem nur ein und fuer alle Mal aus der Welt schaffen, in dem ich es komplett mit BASE64- und dann URL-Encoding kodiert habe. Dies war bei einem De-Referrer der Fall, wo die gesamte URL an das Script zum Dereferenzieren uebergeben werden sollte. Hier stellte sich heraus, dass einige Browser Bugs beim Handling des URL-Encodings hatten. Nur ein BASE64- mit URL-Encoding war hier die einzige und bis dato funktionierende Loesung.

Vielleicht kann hier ein weiteres Servlet geschrieben werden, dass Base64-kodierte Daten annimmt?
Quix0r
 
Beiträge: 1345
Registriert: Di Jul 31, 2007 9:22 am
Wohnort: Krefeld

Re: yacysearch.rss und urlmaskfilter

Beitragvon markus » Fr Mär 25, 2011 8:44 am

Wenn du den String noch durch urlencode jagst, bevor du die Anfrage los schickst, sollte es funktionieren

Vielen Dank für Eure prompten Tipps! urlencode() für den String hat mir geholfen, die Suche läuft nun.

Auch aus datenschutzrechtlichem Hintergrund sollten die Daten eher mit POST an den Peer uebersandt werden (falls YaCy da transparent ist), da die POST-Daten eigentlich nicht geloggt werden, GET-Daten hingegen koennten in Internet-Proxies geloggt werden (siehe Vorratsdatenspeicherung usw.).

Es freut mich, hier solche Hinweise zu bekommen, denn es bestätigt, dass Yacy nicht ganz die falsche Entscheidung für uns war. Es ging nämlich um diese Suche. - Von User-Seite werden aus genau solchen Überlegungen die Daten mit POST übertragen, die Verbindung zum Server ist dabei durchgängig per SSL gesichert. Yacy löst hier eine alte Instanz ab, mit der wir zunehmend aus verschiedenen Gründen unzufrieden waren (die aber zum Teil noch eingebunden ist, das ist hier ein gerade laufender Change).

Der Web-Server loggt nur abgerufene URL, Zeitstempel, HTTP-Statuscode und Datenmenge, d.h. keine IP, kein Referrer, kein User-Agent, etc., und wirft diese Daten nach drei Tagen weg. Das ganze machen wir auch nur, um ggf. nachvollziehen zu können, wann etwas kaputt ging und um einen groben Eindruck davon zu haben, was die Kiste so macht. Ein Log-Auszug sieht bei uns so aus:
Code: Alles auswählen
- 200 [25/Mar/2011:10:29:32 +0100] - GET /favicon.ico -  699
- 200 [25/Mar/2011:10:29:45 +0100] - GET /vortraege/20100707-weichert-elektronische-gesundheitskarte.pdf -  87600
- 200 [25/Mar/2011:10:29:41 +0100] - GET /material/tb/tb33/uld-33-taetigkeitsbericht-2011.pdf -  2086913

Yacy selbst bekommt nur mit, dass da jemand mit einer internen IP andauernd RSS-Anfragen stellt, wobei das MagpieRSS gleiche Anfragen eine Weile cachet, so dass hier gar keine neuen Requests erzeugt werden.
markus
 
Beiträge: 11
Registriert: Do Aug 27, 2009 1:53 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon markus » Fr Mär 25, 2011 10:18 am

Es funktioniert nun alles wie geplant, aber anscheinend wird der übergebene Wert für maximumRecords ignoriert, ich erhalte immer 20 Ergebnisse, egal was ich setze. Hm, mal schauen.
markus
 
Beiträge: 11
Registriert: Do Aug 27, 2009 1:53 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon Orbiter » Fr Mär 25, 2011 10:28 am

Quix0r hat geschrieben:Bei solch "komplexen" Daten empfielt sich eher POST als GET

Ich führe immer gerne vor wie sich aus dem Ändern der '.html'-Extension in '.rss' und '.json' die Ergebnisse weiterverarbeiten lassen würden. Das würde bei POST nicht mehr gehen und das ganze wird sehr intransparent.
Ein Datenschutzproblem sehe ich auch nicht, entweder benutzt du dein YaCy ja im Intranet (meistens auf dem gleichen Host) oder falls du tatsächlich einen Proxy dazwischen haben solltest ist es auch dein eigener Proxy. Wenn du unbedingt einen fremden Proxy benutzen willst sind deine Daten selbstverständlich auch dort sichtbar wenn du POST verwendest.

Aber wenn du die Daten ans Servlet trotzdem mit POST senden willst geht das natürlich ohne Codeänderungen in YaCy.
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: yacysearch.rss und urlmaskfilter

Beitragvon markus » Fr Mär 25, 2011 10:44 am

Wenn ich das Array, dass ich als RSS zurückbekomme, richtig interpretiere, wird irgendwo der Wert itemsperpage auf 20 festgesetzt, weshalb ich unabhängig davon, was ich als maximumRecords festsetze, immer nur 20 Ergebnisse zurückbekomme. Meine Eingebung, itemsperpage mit zu übergeben, half aber leider nicht weiter.
markus
 
Beiträge: 11
Registriert: Do Aug 27, 2009 1:53 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon Quix0r » Fr Mär 25, 2011 11:26 am

Hier mal ein Beispiel aus meinem (noch nicht veroeffentlichten) Script, das YaCy als Suche einbinden soll:
Code: Alles auswählen
// Init request data
$data = array(
    'query'            => 'yacy',
    'verify'           => 'true',
    'contentdom'       => 'text',
    'nav'              => 'all',
    'startRecord'      => '0',
    'resource'         => 'local',
    'urlmaskfilter'    => '.*',
    'prefermaskfilter' => '',
    'indexof'          => 'off',
    'meanCount'        => '5',
    'maximumRecords'   => '10'
);

// Load YaCy JSON URL
$response = sendPostRequest('http://localhost:8080/yacysearch.json', $data, true);

// Parse the response
$json = json_decode(implode('', $response), true);

$data sind genau die Parameter, die du in der Addresszeile siehst, wenn du im lokalen Web-Interface eine Suche startest (abzueglich 'Enter', was nur der Button ist). Du muesstest also bei dir .rss anstelle .json schreiben. Die Funktion sendPostRequest() (und auch sendGetRequest() sind von mir welche geschriebene, sind also bei PHP nicht mit dabei.

Bei Interesse: Hier ist es (ich logge nicht).
Quix0r
 
Beiträge: 1345
Registriert: Di Jul 31, 2007 9:22 am
Wohnort: Krefeld

Re: yacysearch.rss und urlmaskfilter

Beitragvon Low012 » Fr Mär 25, 2011 12:45 pm

markus hat geschrieben:Es funktioniert nun alles wie geplant, aber anscheinend wird der übergebene Wert für maximumRecords ignoriert, ich erhalte immer 20 Ergebnisse, egal was ich setze. Hm, mal schauen.
Ist eure YaCy-Instanz so konfiguriert, dass man sie nur nach Eingabe von Benutzername und Passwort administrieren kann (und nicht dass jeder, der sich auf localhost befindet, administrieren darf)? Wenn ja, könnte es daran liegen, dass YaCy als Schutz gegen zu große Last durch Suchanfragen aus dem Internet nach einer bestimmten Menge von Ergebnissen nichts mehr schickt. Das Limit könnte tatsächlich bei 20 sein, da müsste ich aber nachschauen. Eine Lösung wäre, dass du bei jeder Suchanfrage eine Authentifizierung (Admin-Benutzername und Passwort) mitschickt. Wenn ich das auf der MagpieRSS-Website richtig gelesen habe, wird das ja unterstützt.
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon markus » Mo Mär 28, 2011 7:40 am

Low012 hat geschrieben:Ist eure YaCy-Instanz so konfiguriert, dass man sie nur nach Eingabe von Benutzername und Passwort administrieren kann (und nicht dass jeder, der sich auf localhost befindet, administrieren darf)?

Treffer! Ja, genau so. Damit im Falle von erfolgreichen XSS-Angriffen Benutzer der Suche nicht die Yacy-Instanz kompromittieren können.
Wenn ja, könnte es daran liegen, dass YaCy als Schutz gegen zu große Last durch Suchanfragen aus dem Internet nach einer bestimmten Menge von Ergebnissen nichts mehr schickt. Das Limit könnte tatsächlich bei 20 sein, da müsste ich aber nachschauen. Eine Lösung wäre, dass du bei jeder Suchanfrage eine Authentifizierung (Admin-Benutzername und Passwort) mitschickt. Wenn ich das auf der MagpieRSS-Website richtig gelesen habe, wird das ja unterstützt.

Das wird unterstützt, wäre aber nicht meine erste Wahl, weil dann im Prinzip durch die Durchreichung Leute von außen Admin-Zugang hätten. Lieber würde ich das Limit aufheben (bzw. auf 100 setzen). Ist das ein Parameter in ConfigProperties_p.html?
markus
 
Beiträge: 11
Registriert: Do Aug 27, 2009 1:53 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon Low012 » Mo Mär 28, 2011 8:21 am

markus hat geschrieben:Lieber würde ich das Limit aufheben (bzw. auf 100 setzen). Ist das ein Parameter in ConfigProperties_p.html?
Ich glaube, das müsstest du mit remotesearch.maxcount einstellen können. Ob man das auch auf unendlich stellen kann, weiß ich nicht, dazu müsste ich in den Code schauen, was ich aber leider im Augenblick nicht machen kann.
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon markus » Mo Mär 28, 2011 10:15 am

Low012 hat geschrieben:Ich glaube, das müsstest du mit remotesearch.maxcount einstellen können. Ob man das auch auf unendlich stellen kann, weiß ich nicht, dazu müsste ich in den Code schauen, was ich aber leider im Augenblick nicht machen kann.

Ich habe es auf 100 gestellt (unendlich benötige ich nicht), gespeichert und (später) sogar Yacy neu gestartet. Leider habe ich keine Änderung im Verhalten damit erzeugt. Ich hatte das auch schon selbst gefunden und damit herumprobiert, dann vermutet, dass es wohl nicht das Richtige sei. (Hatte alle Optionen gesucht, bei denen eine 20 stand, dieser Name klang am nächsten dran.)

Falls es was nützt: Yacy ist derzeit 0.99/7620 als Paket von debian.yacy.net.
markus
 
Beiträge: 11
Registriert: Do Aug 27, 2009 1:53 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon Vega » Mo Mär 28, 2011 12:37 pm

Diese Limit gibt es tatsächlich, allerdings habe ich da gerade keine aktuellen Zahlen im Kopf - vor gar nicht langer Zeit ist dieses Limit auch erhöht wurden.
Weiterhin kannst Du diese Beschränkung für bestimmte IP-Adressen/Netzwerk-Adressbereiche aufheben - in der jeweiligen Netzwerkdefinitionsdatei (im Ordner "defaults" findest Du ganz unten den Eintrag "Withelist") - nachteilig ist das diese Datei bei automatischen Updates überschrieben wird.

Gruß
Thomas

Low012 hat geschrieben:
markus hat geschrieben:Es funktioniert nun alles wie geplant, aber anscheinend wird der übergebene Wert für maximumRecords ignoriert, ich erhalte immer 20 Ergebnisse, egal was ich setze. Hm, mal schauen.
Ist eure YaCy-Instanz so konfiguriert, dass man sie nur nach Eingabe von Benutzername und Passwort administrieren kann (und nicht dass jeder, der sich auf localhost befindet, administrieren darf)? Wenn ja, könnte es daran liegen, dass YaCy als Schutz gegen zu große Last durch Suchanfragen aus dem Internet nach einer bestimmten Menge von Ergebnissen nichts mehr schickt. Das Limit könnte tatsächlich bei 20 sein, da müsste ich aber nachschauen. Eine Lösung wäre, dass du bei jeder Suchanfrage eine Authentifizierung (Admin-Benutzername und Passwort) mitschickt. Wenn ich das auf der MagpieRSS-Website richtig gelesen habe, wird das ja unterstützt.
Vega
 
Beiträge: 824
Registriert: Mi Jun 27, 2007 3:34 pm
Wohnort: Dresden

Re: yacysearch.rss und urlmaskfilter

Beitragvon Lotus » Mo Mär 28, 2011 2:39 pm

Low012 hat geschrieben:
markus hat geschrieben:Lieber würde ich das Limit aufheben (bzw. auf 100 setzen). Ist das ein Parameter in ConfigProperties_p.html?
Ich glaube, das müsstest du mit remotesearch.maxcount einstellen können.

Hm, stellt das nicht nur die interne YaCy-Remote-Suche ein?

Vega hat geschrieben:Weiterhin kannst Du diese Beschränkung für bestimmte IP-Adressen/Netzwerk-Adressbereiche aufheben - in der jeweiligen Netzwerkdefinitionsdatei (im Ordner "defaults" findest Du ganz unten den Eintrag "Withelist") - nachteilig ist das diese Datei bei automatischen Updates überschrieben wird.

Nur, wenn der Dateiname serienmäßig original bleibt. Die Lösung hierzu ist, die Datei umzubennenen und die Netzdefinition über die Seite /ConfigNetwork_p.html zu konfigurieren.
Lotus
 
Beiträge: 1699
Registriert: Mi Jun 27, 2007 3:33 pm
Wohnort: Hamburg

Re: yacysearch.rss und urlmaskfilter

Beitragvon Low012 » Di Mär 29, 2011 2:50 pm

Lotus hat geschrieben:
Low012 hat geschrieben:
markus hat geschrieben:Lieber würde ich das Limit aufheben (bzw. auf 100 setzen). Ist das ein Parameter in ConfigProperties_p.html?
Ich glaube, das müsstest du mit remotesearch.maxcount einstellen können.
Hm, stellt das nicht nur die interne YaCy-Remote-Suche ein?

Das scheint tatsächlich so zu sein. Ich habe nochmal in den Code geschaut und das Limit für nicht eingeloggte User scheint direkt im Servlet, das das Dokument zusammenbaut, das zurückgegeben wird, definiert zu sein. Eine Konfiguration ist also nicht ohne Änderung des Codes machbar.

Das Limit scheint Orbiter aber nicht eingebaut zu haben, um den eigenen Peer zu schützen, sondern um andere Server zu schützen, die sonst eventuell übermäßig belastet werden könnten, wenn der Peer die Suchergebnisse verifiziert und dazu die entsprechenden Seiten lädt, um zu schauen, ob das Suchwort in ihnen vorkommt.

Wenn man bei der Suchabfrage die Strategie dafür ändert und verify z.B. auf cacheonly oder false setzt, bekommt man automatisch mehr Ergebnisse.

Beispielabfrage: http://4o4.dyndns.org:8080/yacysearch.rss?query=test&Enter=Search&verify=false&contentdom=text&startRecord=0&resource=global&urlmaskfilter=.*&prefermaskfilter=&indexof=off&meanCount=5&maximumRecords=100

Wenn man nur seinen eigenen Peer befragt, der seinerseits nicht noch andere Peers fragt, kann man den Ergebnissen ja trauen und die Verifizierung der Ergebnisse ist meistens nicht nötig (nur, wenn sich Inhalte von Seiten geändert haben könnten).

Man kann in YaCy ja allerhand User anlegen, um z.B. Rechte im eingebauten Wiki oder im Blog zu vergeben. Wenn wir hier eine zusätzliche Rolle für die Suche hinzufügen würden, könne man bestimmten Benutzern mehr Ergebnisse bei der Suche zugestehen, ohne dass sie gleich die Kontrolle über den Peer übernehmen könnten.
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon markus » Mi Mär 30, 2011 8:27 am

So, Euch allen nochmal vielen Dank für Eure Hilfe. Ich habe nun verify erstmal auf cacheonly gesetzt. Dafür werde ich die Recrawl-Frequenz erhöhen, dann passt das schon. Mir ging es vor allem darum, dass die Snippets mit angezeigt werden. Hier war ich vorher dem ifexists aufgesessen, bei dem das nicht der Fall war, und bin dann ganz glücklich gewesen, hier im Forum irgendwo den Hinweis zu finden, dass ohne "s" welche kommen und das früher ein Fehler im Wiki war.

Auch Quix0r vielen Dank für den anderen Lösungsansatz. Ich habe ihn mir mal heruntergeladen, aber zunächst nicht weiter verwendet, da ich "meine" Lösung schon recht weit hatte, sie ohne weiteres verstehe und sie auch so übersichtlich ist, dass ggf. Vertretungen da schnell reinkommen, falls mal was sein sollte. Leider habe ich auch nicht unendlich Ressourcen, die ich da hineinstecken kann.

Die Idee mit der zusätzlichen Rolle für die Suche finde ich übrigens gut, da ich damit die Yacy-Instanz noch mehr gegen andere Systeme in der DMZ schotten könnte (Zugriff auf Suche nur für authentifizierte Nutzer). Da mein System nun erstmal liefert, was ich möchte, sähe ich dafür aber keine besondere Priorität, wenn es wichtigere Dinge gibt. :o)

Edit: Oh, nun verschwinden mir wieder die Snippets. Kann ich irgendwo konfigurieren, dass die auch bei cacheonly ausgeliefert werden?
markus
 
Beiträge: 11
Registriert: Do Aug 27, 2009 1:53 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon Low012 » Di Apr 05, 2011 12:36 am

Ich habe mittlerweile eine neue Rolle für Benutzer angelegt ("Extended Search right"), bei der die Suchergebnisse so zurückgegeben werden, als wäre der Benutzer als Admin eingeloggt (aber er hat eben keine Admin- oder sonstigen Rechte).

Ein solcher Benutzer kann auf http://localhost:8090/ConfigAccounts_p.html (unten) angelegt werden. Dazu sollte mindestens 0.99/7642 benutzt werden, weil Orbiter da noch eine Bug beseitigt hat, der vorher die Nutzung von neu angelegten Benutzern erschwert hat.

Wenn du nun also einen neuen Benutzer anlegst und die Authentifizierung nutzt, kannst du verify auf "true" setzen und es sollten viele Ergebnisse geliefert werden und Snippets angezeigt werden.
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon markus » Mo Apr 11, 2011 7:23 am

Wow! Ich habe das Update eingespielt und alles läuft nun wie gewünscht. Vielen Dank!
markus
 
Beiträge: 11
Registriert: Do Aug 27, 2009 1:53 pm

Re: yacysearch.rss und urlmaskfilter

Beitragvon Low012 » Mo Apr 11, 2011 7:36 am

Super, das freut mich!
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm


Zurück zu Fragen und Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast