¿Cómo guardar un marcador en Firefox con datos POST?

23

Me gustaría guardar como marcador de Firefox una página a la que no se puede acceder mediante GET. La única forma de recuperar la página es enviar algunos datos POST.

Por ejemplo, me gustaría marcar una página de seguimiento de paquetes de Chronopost , que solo permite POST para ingresar números de paquetes.

¿Alguien conoce una extensión de Firefox, o alguna otra técnica, que me permita hacer esto?

Etienne Dechamps
fuente
Solo una nota geek: no se supone que las solicitudes GET cambien los datos, es por eso que puede marcarlas y llamarlas con la frecuencia que desee. Las solicitudes POST pueden cambiar de estado en el servidor, por lo que no se marcan fácilmente. En los enlaces POST que marque como favoritos, piense si llamarlos varias veces causará problemas, como comprar un artículo adicional en Amazon.
Rich Homolka

Respuestas:

20

Usa un bookmarklet. Por ejemplo, puede usar la herramienta en http://userjs.up.seesaa.net/js/bookmarklet.html para crear un bookmarklet con el siguiente código:

(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'});
})()

Luego use el enlace bookmarklet generado como marcador en su navegador favorito. Cuando haga clic en él, se abrirá una ventana, creará un formulario con los parámetros {search:'test'}y lo enviará .

Para cambiar la URL y los parámetros, simplemente modifique esa última llamada post_to_url.

Esta estrategia puede ser excelente si solo necesita crear el marcador una vez y usarlo muchas veces. Sin embargo, no hace que sea terriblemente fácil crear nuevos marcadores si necesita hacerlo de forma regular.

StriplingWarrior
fuente
¿No necesita la 'búsqueda general en {search:' test '}?
Anton Daneyko
1
@mezhaka: No. Debido a que esto realmente se está evaluando como javascript, en lugar de una cadena JSON, las comillas alrededor de los nombres de propiedades son opcionales a menos que el nombre de la propiedad incluya un espacio o un carácter especial.
StriplingWarrior
1
Gracias por la respuesta. ¿Si necesito url citar mi clave: valores? Por ejemplo, si tengo espacios o caracteres no ASCII en mis claves y valores, ¿es suficiente para que esté rodeado por '' o también debo ocuparme de citar símbolos como ö?
Anton Daneyko
@mezhaka: Estas son las reglas: stackoverflow.com/a/9568622/120955 .
StriplingWarrior
4

Usando la respuesta de @StriplingWarrior, he cambiado un poco el guión para que tenga el mismo comportamiento que los marcadores normales abriendo el marcador en la misma ventana

(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'});
})()

Usando la herramienta en http://userjs.up.seesaa.net/js/bookmarklet.html puede simplemente copiar y pegar el código, cambiar la url y los parámetros y agregar el bookmmarklet generado a sus marcadores. Esto es bastante útil para acceder, por ejemplo, al panel de control de su enrutador.

pablobart
fuente
4

Gracias a las respuestas en esta pregunta, encontré este hermoso complemento para Firefox: Bookmark POST . Carece de una buena documentación, pero esto debería ayudarlo a comenzar:

Con ese marcador, sus cuatro sencillos pasos para su solicitud POST marcada (no se requiere JavaScript):

  1. Abra la página con el formulario que desea marcar y complete el formulario de una manera "típica". NO lo envíe aún.
  2. Abra las Herramientas para desarrolladores web -> Análisis de red.
  3. Envíe su formulario El envío se mostrará en el análisis de red. Allí puede seleccionar "Editar y enviar nuevamente" y copiar el "Cuerpo de solicitud".
  4. Cree un marcador en la página del formulario y agregue la cadena POSTDATA={YOUR_REQUEST_BODY_HERE}como la descripción de los marcadores .

Para mí, esto es mucho más fácil que jugar con Javascript.

SebastianH
fuente
Excelente respuesta pero no funcionó en Waterfox 56.2
Euri Pinhollow
3

Enfoque más simple:

Bookmarklet con formulario completado y carga automática

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

Desventaja: Chromium enviaría la URL de la página web actual como referencia HTTP. (Firefox e IE no lo harían).

¿Por qué es importante el árbitro? Sin tener en cuenta las inquietudes de privacidad, algunos sitios web verificarían el referente en POST para protegerse de las solicitudes maliciosas hechas por la publicación oculta del formulario iframe.

Enfoque alternativo:

Descrito aquí , es un poco más legible pero necesita un archivo HTML en alguna parte, el uso será como:

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

Al trabajar a través de un archivo guardado localmente, no se enviará el árbitro . Incluso en cromo.
Si el archivo se colocará en un sitio web remoto, se enviará un referente y contendrá el host del sitio web y la cadena de consulta original.

usuario
fuente
2

El bookmarklet de frmget funciona para muchos sitios que son indiferentes al método http: aplique el bookmarklet, envíe el formulario, marque la página de resultados.

Para los sitios que requieren POST, existe esta extensión , que no es muy fácil de usar. Puede combinarlo con frmget: aplique frmget, envíe el formulario, marque la página, copie los parámetros GET en el campo de descripción, con el prefijo POSTDATA=.

Tobu
fuente
1

Modifiqué un poco el script proporcionado por @StriplingWarrior para aceptar un archivo HAR como parámetro. El archivo HAR se puede guardar desde las Herramientas para desarrolladores de Chrome (Ctrl + Shift + J).

Primero abra la página con los datos del formulario ya publicados, luego haga clic derecho en el primer documento en la pestaña Red y seleccione "Copiar entrada como HAR". Luego pegue el contenido en la secuencia de comandos a continuación:

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

Guarde esto como un archivo html y debería abrir el formulario publicado. Esto no funciona si el sitio usa viewstate o si verifica el referente.

bortao
fuente
0

Por lo que entiendo sobre la publicación, no hay forma de registrar esa información usted mismo y volver a enviarla.

Sugiero obtener un complemento que complete formularios para usted mejor que Firefox por defecto.

Chrome en realidad tiene una función de reconocimiento y llenado de formularios muy potente incorporada, pero estoy seguro de que hay un complemento de Firefox que hace lo mismo.

Pruebe este, parece prometedor: Form Saver Firefox Add-on

robertpateii
fuente
Pero lamentablemente Chrome no ofrece guardar contraseñas para páginas genéricas HTTP AUTH.
qroberts
Lázaro es mejor que el protector de formas hoy en día.
Tobu
0

Utilizo este complemento de Firefox para marcar acciones POST.

Northben
fuente
0

Según el bookmarklet del usuario :

Esto parece funcionar para UPS con Firefox y una palabra clave para la barra de búsqueda (por ejemplo, "ups XYZ" donde XYZ luego entra en el %s marcador de posición dentro del marcador):

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

(tenga en cuenta que esto tiene que ser una línea)

Ver también:

encargarse de
fuente