GETを使用してアクセスできないページをFirefoxブックマークとして保存したいと思います。ページを取得する唯一の方法は、POSTデータを送信することです。
たとえば、Chronopost小包追跡ページをブックマークして、小包番号の入力のみにPOSTを許可します。
誰もがFirefoxの拡張機能、またはこれを可能にする他のテクニックを知っていますか?
GETを使用してアクセスできないページをFirefoxブックマークとして保存したいと思います。ページを取得する唯一の方法は、POSTデータを送信することです。
たとえば、Chronopost小包追跡ページをブックマークして、小包番号の入力のみに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リクエストへの4つの簡単なステップ(javascriptは不要):
POSTDATA={YOUR_REQUEST_BODY_HERE}
し、ブックマークの説明として文字列を追加します。私にとって、これは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=
。
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ファイルとして保存すると、投稿されたフォームが開きます。サイトがビューステートを使用する場合、またはリファラーをチェックする場合、これは機能しません。
私が投稿について理解していることから、そのデータを自分で記録して再送信する方法はありません。
firefoxがデフォルトで行うよりも、フォームに記入するアドオンを入手することをお勧めします。
実際、Chromeには非常に強力なフォーム認識機能と入力機能が組み込まれていますが、同じことを行うFirefoxアドオンがあるはずです。
これを試してみてください、有望そうです: フォームセーバーFirefoxアドオン
ユーザーのブックマークレットに基づいて:
これは、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行でなければならないことに注意してください)
こちらもご覧ください: