GETを使用してアクセスできないページをFirefoxブックマークとして保存したいのですが。ページを取得する唯一の方法は、いくつかのPOSTデータを送信することです。
たとえば、 クロノポストの小包追跡ページ をブックマークしたいと思います。これは、小包番号の入力にPOSTのみを許可します。
Firefoxの拡張機能や、これを可能にする他のテクニックを知っている人はいますか?
ブックマークレットを使用します。たとえば、 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回作成して、それを何度も使用する必要がある場合に最適です。ただし、定期的に作成する必要がある場合は、新しいブックマークを作成するのはそれほど簡単ではありません。
@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とパラメーターを変更し、生成されたブックマークレットをブックマークに追加できます。 。これは、たとえばルーターのコントロールパネルにアクセスするのに非常に便利です。
この質問の回答のおかげで、Firefox用のこの美しいアドオンを見つけました: Bookmark POST 。それは良いドキュメントを欠いていますが、これはあなたが始めるはずです:
そのブックマークを使用すると、ブックマークしたPOSTリクエスト(JavaScriptは不要)への4つの簡単なステップ:
POSTDATA={YOUR_REQUEST_BODY_HERE}
をブックマークdescriptionとして追加します。私にとって、これはJavascriptをいじるよりもはるかに簡単です。
フォームに記入して自動アップロードしたブックマークレット
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サイトのホストと元のクエリ文字列が含まれます。
frmgetブックマークレット は、httpメソッドに関係のない多くのサイトで機能します。ブックマークレットを適用し、フォームを送信し、結果ページをブックマークします。
POSTを必要とするサイトの場合、 この拡張機能 がありますが、これはひどくユーザーフレンドリーではありません。これをfrmgetと組み合わせることができます。frmgetを適用し、フォームを送信し、ページをブックマークし、GETパラメータを説明フィールドにコピーします。接頭辞はPOSTDATA=
です。
@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ファイルとして保存すると、投稿されたフォームが開きます。サイトがビューステートを使用している場合、またはリファラーをチェックしている場合、これは機能しません。
私は this Firefox Addonを使用してブックマークPOSTアクションをします。
ユーザーのブックマークレット に基づく:
これは、Firefoxと検索バーのキーワードを備えたUPSで機能するようです(例:「upsXYZ」の場合、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>'
(これは1行でなければならないことに注意してください)
参照:
投稿について私が理解していることから、そのデータを自分で記録して再送信する方法はありません。
デフォルトでFirefoxよりもフォームに記入するアドオンを入手することをお勧めします。
Chromeには実際には非常に強力なフォーム認識と入力機能が組み込まれていますが、同じことを行うFirefoxアドオンがあると確信しています。
これを試してみてください、それは有望に見えます: フォームセーバーFirefoxアドオン