Come salvare un segnalibro in Firefox con i dati POST?


23

Vorrei salvare come segnalibro di Firefox una pagina che non è accessibile usando GET. L'unico modo per recuperare la pagina è inviare alcuni dati POST.

Ad esempio, vorrei aggiungere un segnalibro a una pagina di tracciamento dei pacchi di Chronopost , che consente al POST di inserire solo i numeri dei pacchi.

Qualcuno conosce un'estensione di Firefox, o qualche altra tecnica, che mi consentirebbe di farlo?


Solo una nota geek: le richieste GET non devono cambiare i dati, ecco perché puoi aggiungerle ai segnalibri e chiamarle tutte le volte che vuoi. Le richieste POST possono cambiare stato sul server, motivo per cui non sono facilmente segnalibro. Sui link POST che aggiungi ai segnalibri, pensa se chiamarli più volte causerà problemi, come l'acquisto di un oggetto extra da Amazon.
Rich Homolka,

Risposte:


20

Usa un bookmarklet. Ad esempio, è possibile utilizzare lo strumento su http://userjs.up.seesaa.net/js/bookmarklet.html per creare un bookmarklet con il seguente codice:

(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', 
  {search:'test'});
})()

Quindi utilizzare il collegamento del bookmarklet generato come segnalibro nel browser preferito. Quando lo fai clic, si aprirà una finestra, creerà un modulo con i parametri {search:'test'}e invierà quel modulo.

Per modificare l'URL e i parametri, basta modificare l'ultima chiamata a post_to_url.

Questa strategia può essere ottima se devi solo creare il segnalibro una volta e usarlo molte volte. Tuttavia, non è terribilmente facile creare nuovi segnalibri se è necessario farlo regolarmente.


Non ti serve la ricerca "around" in {search: "test"}?
Anton Daneyko,

1
@mezhaka: No. Poiché questo è attualmente valutato come javascript, piuttosto che una stringa JSON, le virgolette intorno ai nomi delle proprietà sono opzionali a meno che il nome della proprietà non includa uno spazio o un carattere speciale.
StriplingWarrior,

1
Grazie per la risposta. Hai bisogno di url per citare la mia chiave: valori? Come se avessi spazi o caratteri non ASCII nelle mie chiavi e valori è sufficiente per racchiuderlo tra '' o devo anche occuparmi di citare simboli come ö?
Anton Daneyko,


4

Usando la risposta di @StriplingWarrior, ho cambiato un po 'lo script per avere lo stesso comportamento dei normali segnalibri aprendo il segnalibro nella stessa finestra

(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', 
  {loginPassword:'password',loginUsername:'admin'});
})()

Utilizzando lo strumento in http://userjs.up.seesaa.net/js/bookmarklet.html puoi semplicemente copiare e incollare il codice, modificare l'URL e i parametri e aggiungere il bookmmarklet generato ai tuoi segnalibri. Questo è abbastanza utile per accedere, ad esempio, al pannello di controllo del router.


4

Grazie alle risposte a questa domanda, ho trovato questo bellissimo componente aggiuntivo per Firefox: Bookmark POST . Manca una buona documentazione ma questo dovrebbe iniziare:

Con quel segnalibro i suoi quattro semplici passaggi per la tua richiesta POST con segnalibro (non è richiesto javascript):

  1. Apri la pagina con il modulo che desideri aggiungere ai segnalibri e compila il modulo in modo "tipico". NON inviare ancora.
  2. Apri gli Strumenti per sviluppatori Web -> Analisi di rete.
  3. Invia il tuo modulo. L'invio verrà visualizzato nell'analisi della rete. Lì puoi selezionare "Modifica e invia di nuovo" e copiare il "Corpo della richiesta".
  4. Creare un segnalibro nella pagina del modulo e aggiungere la stringa POSTDATA={YOUR_REQUEST_BODY_HERE}come descrizione dei segnalibri .

Per me questo è molto più semplice che giocherellare con Javascript.


Risposta eccellente ma non ha funzionato in Waterfox 56.2
Euri Pinhollow il

3

Approccio più semplice:

Bookmarklet con modulo compilato e caricamento automatico

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>'

Unico inconveniente: Chromium invierebbe l'URL della pagina Web corrente come referente HTTP. (Firefox e IE no.)

Perché il referente conta? Senza tenere conto dei problemi di privacy, alcuni siti Web controllerebbero il referente su POST per proteggersi dalle richieste malevole inviate da post nascosti di moduli iframe.

Approccio alternativo:

Descritto qui , è leggermente più leggibile ma necessita di file HTML da qualche parte, l'utilizzo sarà simile a:

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

Quando si lavora attraverso un file salvato localmente, il referer non verrà inviato. Anche in cromo.
Se il file verrà inserito in un sito Web remoto, verrà inviato un referer che conterrà l'host del sito Web e la stringa di query originale.


2

Il bookmarklet di frmget funziona per molti siti indifferenti al metodo http: applica il bookmarklet, invia il modulo, aggiungi la pagina dei risultati ai segnalibri.

Per i siti che richiedono POST, c'è questa estensione , che non è terribilmente facile da usare. Puoi combinarlo con frmget: applica frmget, invia il modulo, aggiungi la pagina ai segnalibri, copia i parametri GET nel campo della descrizione, con il prefisso POSTDATA=.


1

Ho modificato un po 'lo script fornito da @StriplingWarrior per accettare un file HAR come parametro. Il file HAR può essere salvato dagli Strumenti per sviluppatori di Chrome (Ctrl + Shift + J).

Prima apri la pagina con i dati del modulo già pubblicati, quindi fai clic con il pulsante destro del mouse sul primo documento nella scheda Rete e seleziona "Copia voce come HAR". Quindi incolla il contenuto sullo script seguente:

<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>

Salvalo come file html e dovrebbe aprire il modulo pubblicato. Questo non funziona se il sito utilizza viewstate o se controlla il referrer.



0

Da quello che ho capito sulla posta, non c'è modo di registrare da soli quei dati e inviarli di nuovo.

Suggerisco di ottenere un componente aggiuntivo che compila i moduli per te meglio di come fa Firefox per impostazione predefinita.

Chrome ha in realtà un potente modulo di riconoscimento e compilazione integrato, ma sono sicuro che c'è un componente aggiuntivo di Firefox che fa la stessa cosa.

Prova questo, sembra promettente: Modulo aggiuntivo Risparmio modulo di Firefox


Ma purtroppo Chrome non offre di salvare le password per le pagine HTTP AUTH generiche.
qroberts,

Oggi Lazzaro è meglio del risparmiatore di forma.
Tobu,


0

Basato sul bookmarklet dell'utente :

Questo sembra funzionare per UPS con Firefox e una parola chiave per la barra di ricerca (ad esempio "ups XYZ" in cui XYZ entra nel %ssegnaposto all'interno del bookmarklet):

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>'

(nota che deve essere una riga)

Guarda anche:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.