我想将无法使用 GET 访问的页面保存为 Firefox 书签。检索该页面的唯一方法是发送一些 POST 数据。
例如,我想收藏Chronopost 包裹追踪页面,仅允许使用 POST 方式输入包裹号。
有谁知道 Firefox 扩展或其他技术可以让我做到这一点?
答案1
使用书签小工具。例如,您可以使用以下工具: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
。
如果您只需要创建一次书签并多次使用,那么这种策略就很好了。但是,如果您需要定期创建新书签,那么这种方法就不太容易了。
答案2
使用@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 和参数,然后将生成的 bookmmarklet 添加到您的书签即可。这对于访问路由器控制面板等非常有用。
答案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 会将当前网页 URL 发送为 HTTP referer。(Firefox 和 IE 则不会。)
为什么 referer 很重要? 如果不考虑隐私问题,一些网站会在 POST 时检查 referer,以保护自己免受隐藏 iframe 表单 post 发出的恶意请求。
替代方法:
此处描述,它的可读性更强一些,但是需要 HTML 文件,用法如下:
file:///C:/getToPost?name1=value1&name2=value2#http://url.com/service
当处理本地保存的文件时,referer 将不是发送。即使在 Chromium 中也是如此。
如果文件将被放置在远程网站上,则 referer 将被发送,并且将包含网站主机和原始查询字符串。
答案4
这frmget 小书签适用于许多对 http 方法无关的网站:应用书签小工具、提交表单、为结果页面添加书签。
对于需要 POST 的站点,有此扩展,不太方便用户使用。您可以将其与 frmget 结合使用:应用 frmget,提交表单,将页面添加为书签,将 GET 参数复制到描述字段中,并以 为前缀POSTDATA=
。