FirefoxでPOSTデータとともにブックマークを保存する方法は?


23

GETを使用してアクセスできないページをFirefoxブックマークとして保存したいと思います。ページを取得する唯一の方法は、POSTデータを送信することです。

たとえば、Chronopost小包追跡ページをブックマークして、小包番号の入力のみにPOSTを許可します。

誰もがFirefoxの拡張機能、またはこれを可能にする他のテクニックを知っていますか?


ちょっとした注意:GETリクエストはデータを変更するものではないので、それをブックマークして好きなだけ呼び出すことができます。POSTリクエストはサーバー上の状態を変更することが許可されているため、簡単にブックマークできません。ブックマークしたPOSTリンクで、複数回呼び出すと、Amazonから余分なアイテムを購入するなどの問題が発生するかどうかを検討します。
リッチホモルカ

回答:


20

ブックマークレットを使用します。たとえば、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', 
  {search:'test'});
})()

次に、生成されたブックマークレットリンクをお気に入りのブラウザのブックマークとして使用します。クリックすると、ウィンドウが開き、パラメータを使用してフォームが作成され、{search:'test'}そのフォームが送信されます。

URLとパラメーターを変更するには、最後の呼び出しを微調整しpost_to_urlます。

この戦略は、ブックマークを1回作成して何度も使用する必要がある場合に最適です。ただし、定期的に新しいブックマークを作成する必要がある場合、新しいブックマークを簡単に作成できるわけではありません。


「{search: 'test'}の 'Around Search'は必要ありませんか?
アントンダネイコ

1
@mezhaka:いいえ。これは実際にはJSON文字列ではなくjavascriptとして評価されているため、プロパティ名にスペースまたは特殊文字が含まれていない限り、プロパティ名を囲む引用符はオプションです。
StriplingWarrior

1
返信いただきありがとうございます。key:valuesをURL引用符で囲む必要がある場合はどうしますか?キーや値にスペースまたは非ASCII文字がある場合、それを ''で囲むのに十分なのか、またはöのような引用符の記号の世話をする必要がありますか?
アントンダネイコ

@mezhaka:ここでのルールは以下の通りですstackoverflow.com/a/9568622/120955
StriplingWarrior

4

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

http://userjs.up.seesaa.net/js/bookmarklet.htmlのツールを使用すると、コードをコピーして貼り付け、URLとパラメーターを変更し、生成されたブックマークレットをブックマークに追加できます。これは、たとえばルーターのコントロールパネルにアクセスするのに非常に便利です。


4

この質問への回答のおかげで、Firefoxのこの美しいアドオン:Bookmark POSTを見つけました。優れたドキュメントはありませんが、これで開始できます。

そのブックマークを使用して、ブックマークされたPOSTリクエストへの4つの簡単なステップ(javascriptは不要):

  1. ブックマークするフォームが含まれるページを開き、「典型的な」方法でフォームに入力します。まだ提出しないでください。
  2. Web-Developer Tools-> Network Analysisを開きます。
  3. フォームを送信します。送信内容はネットワーク分析に表示されます。そこで、「編集して再送信」を選択し、「リクエスト本文」をコピーできます。
  4. フォームページにブックマークを作成POSTDATA={YOUR_REQUEST_BODY_HERE}し、ブックマークの説明として文字列を追加します。

私にとって、これはJavascriptをいじるよりもずっと簡単です。


優れた答えですが、Waterfox 56.2では機能しませんでした
Euri Pinhollow

3

最も簡単なアプローチ:

記入済みフォームと自動アップロードのブックマークレット

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

欠点:Chromiumは現在のWebページのURLをHTTPリファラーとして送信します。(FirefoxとIEはそうしません。)

リファラーが重要な理由 プライバシーの懸念を考慮せずに、一部のWebサイトはPOSTでリファラーをチェックして、非表示のiframeフォームポストによって行われた悪意のあるリクエストから自分自身を保護します。

代替アプローチ:

ここ説明しますが、少し読みやすくなっていますが、どこかにHTMLファイルが必要です。使用方法は次のようになります。

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

ローカルに保存されたファイルを処理する場合、リファラーは送信されません。クロムでも。
ファイルがリモートWebサイトに配置される場合、リファラーが送信され、Webサイトのホストと元のクエリ文字列が含まれます。


2

frmgetブックマークレットは、ブックマークレットを適用するフォームを送信、結果ページをブックマークする:HTTPメソッドに無関心されている多くのサイトで動作します。

POSTを必要とするサイトには、この拡張機能がありますが、これはひどくユーザーフレンドリーではありません。frmgetと組み合わせることができます。frmgetを適用し、フォームを送信し、ページをブックマークし、GETパラメーターを説明フィールドにコピーしますPOSTDATA=


1

HARファイルをパラメーターとして受け入れるように、@ StriplingWarriorが提供するスクリプトを少し変更しました。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ファイルとして保存すると、投稿されたフォームが開きます。サイトがビューステートを使用する場合、またはリファラーをチェックする場合、これは機能しません。



0

私が投稿について理解していることから、そのデータを自分で記録して再送信する方法はありません。

firefoxがデフォルトで行うよりも、フォームに記入するアドオンを入手することをお勧めします。

実際、Chromeには非常に強力なフォーム認識機能と入力機能が組み込まれていますが、同じことを行うFirefoxアドオンがあるはずです。

これを試してみてください、有望そうです: フォームセーバーFirefoxアドオン


しかし残念なことに、Chromeは一般的なHTTP AUTHページのパスワードを保存することを提供していません。
qroberts

Lazarusは最近ではフォームセーバーよりも優れています。
東武


0

ユーザーのブックマークレットに基づいて:

これは、Firefoxと検索バーのキーワード(たとえば、XYZが%sブックマークレット内のプレースホルダーに入る「ups XYZ」)を備えたUPSで機能するようです。

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

(これは1行でなければならないことに注意してください)

こちらもご覧ください:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.