So speichern Sie ein Lesezeichen in Firefox mit POST-Daten

9074
Etienne Dechamps

Ich möchte als Firefox-Lesezeichen eine Seite speichern, auf die mit GET nicht zugegriffen werden kann. Die einzige Möglichkeit, die Seite abzurufen, ist das Senden einiger POST-Daten.

Zum Beispiel möchte ich eine Chronopost-Paketverfolgungsseite mit einem Lesezeichen versehen, auf der POST nur zur Eingabe von Paketnummern zulässig ist.

Kennt jemand eine Firefox-Erweiterung oder eine andere Technik, die es mir erlaubt, dies zu tun?

22
Nur ein Geek-Hinweis: GET-Anfragen sollen keine Daten ändern, deshalb können Sie sie mit einem Lesezeichen versehen und sie so oft aufrufen, wie Sie möchten. POST-Anforderungen dürfen den Status auf dem Server ändern, weshalb sie nicht einfach mit einem Lesezeichen versehen werden können. Denken Sie bei POST-Links, die Sie als Lesezeichen verwenden, darüber nach, ob ein mehrfacher Aufruf zu Problemen führt, z. B. beim Kauf eines zusätzlichen Artikels bei Amazon. Rich Homolka vor 11 Jahren 0

10 Antworten auf die Frage

19
StriplingWarrior

Verwenden Sie ein Bookmarklet. Beispielsweise können Sie das Tool unter http://userjs.up.seesaa.net/js/bookmarklet.html verwenden, um ein Bookmarklet mit dem folgenden Code zu erstellen:

(function(){ var post_to_url = function(path, params, method) { var openWindow = window.open(path); method = method || "post";  var form = openWindow.document.createElement("form"); form.setAttribute("method", method); form.setAttribute("action", path); for(var key in params) { var hiddenField = document.createElement("input"); hiddenField.setAttribute("type", "hidden"); hiddenField.setAttribute("name", key); hiddenField.setAttribute("value", params[key]); form.appendChild(hiddenField); } openWindow.document.body.appendChild(form); form.submit(); }; post_to_url( 'http://www.chronopost.fr/transport-express/livraison-colis/engineName/search/accueil/suivi',  ); })() 

Verwenden Sie dann den generierten Bookmarklet-Link als Lesezeichen in Ihrem bevorzugten Browser. Wenn Sie darauf klicken, wird ein Fenster geöffnet, ein Formular mit den Parametern erstellt und dieses Formular gesendet.

Um die URL und die Parameter zu ändern, optimieren Sie einfach den letzten Aufruf post_to_url.

Diese Strategie kann großartig sein, wenn Sie das Lesezeichen nur einmal erstellen und häufig verwenden müssen. Es ist jedoch nicht besonders einfach, neue Lesezeichen zu erstellen, wenn Sie dies regelmäßig tun müssen.

Benötigen Sie nicht die Umkreissuche in ? Anton Daneyko vor 11 Jahren 0
@mezhaka: Nein. Da dies tatsächlich als Javascript und nicht als JSON-String ausgewertet wird, sind Anführungszeichen um Eigenschaftsnamen optional, es sei denn, der Name der Eigenschaft enthält ein Leerzeichen oder ein Sonderzeichen. StriplingWarrior vor 11 Jahren 1
Danke für die Antwort. Müssen Sie meinen Schlüssel zitieren: Werte? Wenn ich zum Beispiel Leerzeichen oder Nicht-ASCII-Zeichen in meinen Schlüsseln und Werten habe, reicht das aus, um es mit '' zu umgeben, oder muss ich auch auf Anführungszeichen wie ö achten? Anton Daneyko vor 11 Jahren 1
@mezhaka: Hier sind die Regeln: http://stackoverflow.com/a/9568622/120955. StriplingWarrior vor 11 Jahren 0
4
pablobart

Mit der Antwort von @StriplingWarrior habe ich das Skript ein wenig geändert, um dasselbe Verhalten wie die normalen Lesezeichen zu haben, indem ich das Lesezeichen im selben Fenster öffne

(function(){ var post_to_url = function(path, params, method) { method = method || "post";  var form = window.document.createElement("form"); form.setAttribute("method", method); form.setAttribute("action", path); for(var key in params) { var hiddenField = document.createElement("input"); hiddenField.setAttribute("type", "hidden"); hiddenField.setAttribute("name", key); hiddenField.setAttribute("value", params[key]); form.appendChild(hiddenField); } window.document.body.appendChild(form); form.submit(); }; post_to_url( 'http://192.168.0.1/goform/login',  ); })() 

Mit dem Tool in http://userjs.up.seesaa.net/js/bookmarklet.html können Sie einfach den Code kopieren und einfügen, die URL und die Parameter ändern und das generierte bookmmarklet Ihren Lesezeichen hinzufügen. Dies ist sehr nützlich, um beispielsweise auf das Router-Bedienfeld zuzugreifen.

4
SebastianH

Dank der Antworten auf diese Frage habe ich dieses schöne Add-On für Firefox gefunden: Bookmark POST . Es fehlt eine gute Dokumentation, aber dies sollte Ihnen den Einstieg erleichtern:

Mit diesem Lesezeichen sind vier einfache Schritte zu Ihrer mit einem Lesezeichen versehenen POST-Anfrage möglich (kein Javascript erforderlich):

  1. Öffnen Sie die Seite mit dem Formular, das Sie mit einem Lesezeichen versehen möchten, und füllen Sie das Formular auf "typische" Weise aus. Noch nicht einreichen
  2. Öffnen Sie die Web-Developer Tools -> Network Analysis.
  3. Senden Sie Ihr Formular. Das Senden wird in der Netzwerkanalyse angezeigt. Dort können Sie "Bearbeiten und erneut senden" auswählen und den "Request-Body" kopieren.
  4. Erstellen Sie ein Lesezeichen auf die Formularseite und fügen Sie die Zeichenfolge POSTDATA=als Lesezeichen Beschreibung .

Für mich ist das viel einfacher, als mit Javascript herumzuspielen.

Hervorragende Antwort, aber es funktionierte nicht in Waterfox 56.2 Euri Pinhollow vor 5 Jahren 0
2
Tobu

Das Frmget-Bookmarklet funktioniert für viele Websites, die unabhängig von der http-Methode sind: Das Bookmarklet anwenden, das Formular absenden, die Ergebnisseite mit einem Lesezeichen versehen.

Für Websites, die POST benötigen, gibt es diese Erweiterung, die nicht besonders benutzerfreundlich ist. Sie können es mit Frmget kombinieren: Frmget anwenden, das Formular absenden, die Seite mit einem Lesezeichen versehen, die GET-Parameter mit dem Präfix in das Beschreibungsfeld kopieren POSTDATA=.

2
user

Einfachster Ansatz:

Bookmarklet mit ausgefülltem Formular und automatischem Upload

javascript:'<html><body onload="document.forms[0].submit()"><form action="http://www.example.com" method="POST"><input name="whatever" value="whatever" type="hidden"></form></body></html>' 

Nachteil: Chromium würde die aktuelle Webseiten-URL als HTTP-Verweis senden. (Firefox und IE würden nicht.)

Warum ist der Referer wichtig? Ohne Rücksicht auf den Datenschutz zu nehmen, würden einige Websites den Referer für POST überprüfen, um sich vor böswilligen Anfragen zu schützen, die von einem ausgeblendeten iframe-Formular gesendet werden.

Alternativer Ansatz:

Hier beschrieben, es ist etwas lesbarer, benötigt aber irgendwo eine HTML-Datei. Die Verwendung wird wie folgt aussehen:

file:///C:/getToPost?name1=value1&name2=value2#http://url.com/service 

Beim Durcharbeiten einer lokal gespeicherten Datei wird kein Verweis gesendet. Auch in Chrom.
Wenn die Datei auf einer Remote-Website abgelegt wird, wird der Referer gesendet und enthält den Websitehost und die ursprüngliche Abfragezeichenfolge.

1
john h

Verwenden Sie das iMacro-Plugin, das für Firefox und Chrome verfügbar ist .

1
bortao

I modified a little the script supplied by @StriplingWarrior to accept a HAR file as parameter. The HAR file can be saved from Chrome's Developer Tools (Ctrl+Shift+J).

First open the page with the form data already posted, then right click the first document on the Network tab and select "Copy entry as HAR". Then paste the content on the script below:

<html><body><script> function dopost() { var form = document.createElement("form"); form.setAttribute("method", "post"); form.setAttribute("action", har["request"]["url"]); var params = har["request"]["postData"]["params"]; for(var e in params) { var hiddenField = document.createElement("input"); hiddenField.setAttribute("type", "hidden"); hiddenField.setAttribute("name", params[e]["name"]); hiddenField.setAttribute("value", params[e]["value"]); form.appendChild(hiddenField); } document.body.appendChild(form); form.submit(); } window.onload=dopost; var har= //-----PASTE HERE------ </script> </body></html> 

Save this as a html file and it should open the posted form. This don't work if the site uses viewstate or if it checks the referrer.

0
robertpateii

Nach dem, was ich unter Post verstehe, gibt es keine Möglichkeit, diese Daten selbst aufzuzeichnen und erneut zu senden.

Ich schlage vor, ein Add-On zu erhalten, das Formulare für Sie besser ausfüllt als Firefox standardmäßig.

Chrome verfügt zwar über eine sehr leistungsfähige Funktion zur Formularerkennung und -ausfüllung, aber ich bin mir sicher, dass es ein Firefox-Addon gibt, das dasselbe tut.

Probieren Sie es aus, es sieht vielversprechend aus: Form Saver Firefox Add-on

Leider bietet Chrome nicht an, Passwörter für generische HTTP AUTH-Seiten zu speichern. qroberts vor 13 Jahren 0
Lazarus ist heutzutage besser als Formsparer. Tobu vor 11 Jahren 0
0
northben

I use this Firefox Addon to bookmark POST actions.

0
handle

Basierend auf dem Bookmarklet des Benutzers :

Dies scheint bei UPS mit Firefox und einem Schlüsselwort für die Suchleiste zu funktionieren (zB "ups XYZ", wobei XYZ dann in den %sPlatzhalter im Bookmarklet geht):

javascript:' <html><body%20onload="document.forms[0].submit()"> <form%20action="https://wwwapps.ups.com/WebTracking/track"%20method="POST"> <input%20name="trackNums"%20value="%s"%20type="hidden"> <input%20name="track.x"%20value="anything"%20type="hidden"> </form> </body></html>' 

(Beachten Sie, dass dies eine Zeile sein muss)

Siehe auch: