Como salvar um marcador no Firefox com dados POST?

22

Eu gostaria de salvar como um marcador do Firefox uma página que não é acessível usando GET. A única maneira de recuperar a página é enviar alguns dados POST.

Por exemplo, eu gostaria de marcar como favorito um Página de rastreamento de parcelas Chronopost , que só permite POST para inserir números de lote.

Alguém conhece uma extensão do Firefox ou alguma outra técnica que me permita fazer isso?

    
por Etienne Dechamps 31.08.2010 / 16:22

10 respostas

19

Use um bookmarklet. Por exemplo, você pode usar a ferramenta no link para criar um bookmarklet com o seguinte 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'});
})()

Em seguida, use o link do bookmarklet gerado como um favorito no seu navegador favorito. Quando você clica nele, ele abre uma janela, cria um formulário com os parâmetros {search:'test'} e envia esse formulário.

Para alterar o URL e os parâmetros, basta ajustar a última chamada para post_to_url .

Essa estratégia pode ser ótima se você precisar criar o marcador apenas uma vez e usá-lo várias vezes. No entanto, não é muito fácil criar novos marcadores se você precisar fazer isso regularmente.

    
por 18.10.2010 / 19:36
4

Usando a resposta de @StriplingWarrior, alterei um pouco o script para ter o mesmo comportamento que os favoritos normais, abrindo o marcador na mesma janela

(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 a ferramenta no link , basta copiar e colar o código, alterar o URL e os parâmetros e adicione o bookmmarklet gerado aos seus favoritos. Isso é muito útil para acessar, por exemplo, o painel de controle do seu roteador.

    
por 05.09.2013 / 04:29
4

Graças às respostas desta pergunta, encontrei este belo add-on para o Firefox: Bookmark POST . Falta boa documentação, mas isso deve começar:

Com esse marcador, suas quatro etapas fáceis para sua solicitação POST marcada (sem necessidade de javascript):

  1. Abra a página com o formulário que você deseja marcar e preencha o formulário de maneira "típica". NÃO envie ainda.
  2. Abra as Ferramentas do desenvolvedor da web - > Análise de Rede.
  3. Envie seu formulário. O envio aparecerá nas análises de rede. Lá você pode selecionar "Editar e enviar novamente" e copiar o "Corpo da Solicitação".
  4. Crie um marcador na página de formulário e adicione a string POSTDATA={YOUR_REQUEST_BODY_HERE} como os marcadores description .

Para mim, isso é muito mais fácil do que mexer no Javascript.

    
por 03.02.2014 / 10:45
2

O bookmarklet frmget funciona para muitos sites que são indiferentes ao método http: aplique o bookmarklet, envie no formulário, marque a página de resultados.

Para sites que exigem POST, há esta extensão , que não é muito fácil de usar. Você pode combiná-lo com o frmget: aplicar frmget, enviar o formulário, marcar a página, copiar os parâmetros GET no campo de descrição, prefixado com POSTDATA= .

    
por 18.12.2012 / 13:44
2

Abordagem mais simples:

Bookmarklet com formulário preenchido e autoupload

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

Desvantagem: o Chromium enviaria o URL da página atual como referência HTTP. (Firefox e IE não.)

Por que o referenciador é importante? Sem levar em conta as preocupações com a privacidade, alguns sites verificariam o referenciador no POST para se proteger de solicitações maliciosas feitas por post de formulário iframe oculto.

Abordagem alternativa:

Descrito aqui , é um pouco mais legível, mas precisa de arquivo HTML em algum lugar, o uso será como:

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

Ao trabalhar com o arquivo salvo localmente, o remetente não será enviado. Mesmo no cromo.
Se o arquivo for colocado em um site remoto, o remetente será enviado e conterá o host do site e a string de consulta original.

    
por 31.12.2013 / 00:55
1

Eu modifiquei um pouco o script fornecido pelo @StriplingWarrior para aceitar um arquivo HAR como parâmetro. O arquivo HAR pode ser salvo nas Ferramentas do desenvolvedor do Chrome (Ctrl + Shift + J).

Primeiro abra a página com os dados do formulário já publicados, clique com o botão direito no primeiro documento da guia Rede e selecione "Copiar entrada como HAR". Em seguida, cole o conteúdo no script abaixo:

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

Salve isso como um arquivo html e ele deve abrir o formulário postado. Isso não funciona se o site usar viewstate ou se verificar o referenciador.

    
por 08.02.2012 / 20:12
1

Use o plugin iMacro, disponível para Firefox e Chrome .

    
por 01.08.2011 / 21:34
0

Pelo que entendi, não há como registrar esses dados e enviá-los novamente.

Sugiro obter um complemento que preencha formulários para você melhor do que o Firefox por padrão.

O Chrome tem um recurso de reconhecimento e preenchimento de formulários muito poderoso, mas tenho certeza de que há um addon do firefox que faz a mesma coisa.

Tente este aqui, parece promissor: Add-on do Firefox do Form Saver

    
por 31.08.2010 / 17:19
0

Eu uso este Firefox Addon para marcar ações POST.

    
por 10.05.2013 / 16:19
0

Com base no bookmarklet do usuário :

Isso parece funcionar para o UPS com o Firefox e uma palavra-chave para a barra de pesquisa (por exemplo, "ups XYZ", em que XYZ entra no marcador %s dentro do 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>'

(note que esta tem que ser uma linha)

Veja também:

  • link
  • link
  • link (nenhuma menção em documentos oficiais?)
por 12.03.2018 / 08:58