Как сохранить закладку в Firefox с данными POST?

9012
Etienne Dechamps

Я хотел бы сохранить как закладку Firefox страницу, которая недоступна с помощью GET. Единственный способ получить страницу - это отправить некоторые данные POST.

Например, я хотел бы добавить в закладки страницу отслеживания посылок Chronopost, которая позволяет только POST для ввода номеров посылок.

Кто-нибудь знает расширение Firefox или другую технику, которая позволила бы мне это сделать?

22
Просто замечание гика: запросы GET не должны изменять данные, поэтому вы можете добавлять их в закладки и вызывать их так часто, как захотите. POST-запросам разрешено изменять состояние на сервере, поэтому их нелегко добавить в закладки. В ссылках POST, которые вы добавляете в закладки, подумайте, не вызовет ли их несколько раз такие проблемы, как покупка дополнительного товара в Amazon. Rich Homolka 12 лет назад 0

10 ответов на вопрос

19
StriplingWarrior

Используйте букмарклет. Например, вы можете использовать инструмент по адресу http://userjs.up.seesaa.net/js/bookmarklet.html, чтобы создать букмарклет со следующим кодом:

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

Затем используйте созданную ссылку на закладку в качестве закладки в вашем любимом браузере. Когда вы щелкнете по нему, он откроет окно, создаст форму с параметрами и отправит эту форму.

Чтобы изменить URL-адрес и параметры, просто настройте последний вызов post_to_url.

Эта стратегия может быть полезной, если вам просто нужно создать закладку один раз и использовать ее много раз. Однако создание новых закладок не очень просто, если вам нужно делать это на регулярной основе.

Вам не нужен поиск по кругу в ? Anton Daneyko 11 лет назад 0
@mezhaka: Нет. Поскольку это на самом деле оценивается как javascript, а не как строка JSON, кавычки вокруг имен свойств являются необязательными, если только имя свойства не содержит пробел или специальный символ. StriplingWarrior 11 лет назад 1
Спасибо за ответ. Вы, если мне нужно, чтобы URL цитата мой ключ: значения? Например, если в моих ключах есть пробелы или символы, отличные от ASCII, достаточно ли значений, чтобы они были заключены в '', или мне также нужно позаботиться о цитировании таких символов, как ö? Anton Daneyko 11 лет назад 1
@mezhaka: Вот правила: http://stackoverflow.com/a/9568622/120955. StriplingWarrior 11 лет назад 0
4
pablobart

Используя ответ @StriplingWarrior, я немного изменил сценарий, чтобы он действовал так же, как обычные закладки, открыв закладку в том же окне.

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

Используя инструмент http://userjs.up.seesaa.net/js/bookmarklet.html, вы можете просто скопировать и вставить код, изменить URL-адрес и параметры и добавить созданный букмарклет в свои закладки. Это довольно полезно, например, для доступа к панели управления маршрутизатором.

4
SebastianH

Благодаря ответам на этот вопрос я нашел это прекрасное дополнение для Firefox: Bookmark POST . В ней отсутствует хорошая документация, но с этого следует начать:

С этой закладкой четыре простых шага к вашему POST-запросу, добавленному в закладки (JavaScript не требуется):

  1. Откройте страницу с формой, которую вы хотите добавить в закладки, и заполните форму «типичным» способом. НЕ отправляйте еще.
  2. Откройте Инструменты веб-разработчика -> Анализ сети.
  3. Отправьте вашу форму. Подтверждение будет отображаться в сетевом анализе. Там вы можете выбрать «Редактировать и отправить снова» и скопировать «Тело запроса».
  4. Создайте закладку на странице формы и добавьте строку POSTDATA=в качестве описания закладок .

Для меня это намного проще, чем возиться с Javascript.

Отличный ответ, но он не работал в Waterfox 56.2 Euri Pinhollow 6 лет назад 0
2
Tobu

Frmget букмарклет работает на многих сайтах, которые равнодушны к методу HTTP: применить букмарклет, отправить форму, закладки на странице результатов.

Для сайтов, которые требуют POST, есть это расширение, которое не очень удобно для пользователя. Вы можете комбинировать его с frmget: применить frmget, отправить форму, добавить страницу в закладки, скопировать параметры GET в поле описания, с префиксом POSTDATA=.

2
user

Simplest approach:

Bookmarklet with filled form and 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>' 

Downside: Chromium would send current webpage URL as HTTP referer. (Firefox and IE would not.)

Why referer matters? Without taking into account privacy concerns, some websites would check referer on POST to protect themselves from malicious requests made by hidden iframe form post.

Alternative approach:

Described here, it's slightly more readable but needs HTML file somewhere, usage will be like:

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

When working through locally saved file, referer will not be sent. Even in Chromium.
If the file will be placed on a remote website then referer will be sent and will contain website host and original query string.

1
john h

Используйте плагин iMacro, доступный для Firefox и Chrome .

1
bortao

Я немного изменил скрипт, предоставленный @StriplingWarrior, чтобы принимать файл HAR в качестве параметра. Файл HAR можно сохранить из Инструментов разработчика Chrome (Ctrl + Shift + J).

Сначала откройте страницу с уже опубликованными данными формы, затем щелкните правой кнопкой мыши первый документ на вкладке Сеть и выберите «Копировать запись как HAR». Затем вставьте содержимое в скрипт ниже:

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

Сохраните это как HTML-файл, и он должен открыть опубликованную форму. Это не работает, если сайт использует viewstate или проверяет реферер.

0
robertpateii

Из того, что я понимаю о посте, нет способа записать эти данные самостоятельно и повторно отправить их.

Я предлагаю получить надстройку, которая заполняет формы для вас лучше, чем Firefox по умолчанию.

В Chrome встроена очень мощная функция распознавания и заполнения форм, но я уверен, что есть аддон Firefox, который делает то же самое.

Попробуйте, это выглядит многообещающе: Form Saver Firefox Add-on

Но, к сожалению, Chrome не предлагает сохранять пароли для общих HTTP-страниц AUTH. qroberts 14 лет назад 0
Лазарь лучше, чем спасатель форм в наши дни. Tobu 11 лет назад 0
0
northben

Я использую этот Firefox Addon для добавления в закладки действий POST.

0
handle

На основании букмарклета пользователя :

Похоже, это работает для UPS с Firefox и ключевым словом для строки поиска (например, «ups XYZ», где XYZ затем помещается в %sзаполнитель внутри букмарклета):

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

(обратите внимание, это должна быть одна строка)

Смотрите также: