Bagaimana cara menyimpan bookmark di Firefox dengan data POST?

23

Saya ingin menyimpan sebagai penunjuk halaman Firefox yang tidak dapat diakses menggunakan GET. Satu-satunya cara untuk mengambil halaman adalah mengirim beberapa data POST.

Misalnya, saya ingin menandai halaman pelacakan paket Chronopost , yang hanya memungkinkan POST untuk memasukkan nomor paket.

Adakah yang tahu ekstensi Firefox, atau teknik lain, yang akan memungkinkan saya untuk melakukan ini?

Etienne Dechamps
sumber
Hanya catatan geek: MENDAPATKAN permintaan tidak seharusnya mengubah data, itu sebabnya Anda dapat mem-bookmark dan memanggil mereka sesering yang Anda mau. Permintaan POST diizinkan untuk mengubah status di server, itulah sebabnya mereka tidak mudah di-bookmark. Pada tautan POST yang Anda bookmark, pikirkan jika menelepon mereka berkali-kali akan menimbulkan masalah, seperti membeli item tambahan dari Amazon.
Rich Homolka

Jawaban:

20

Gunakan bookmarklet. Misalnya, Anda dapat menggunakan alat di http://userjs.up.seesaa.net/js/bookmarklet.html untuk membuat bookmarklet dengan kode berikut:

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

Kemudian gunakan tautan bookmarklet yang dihasilkan sebagai bookmark di browser favorit Anda. Ketika Anda mengkliknya, itu akan membuka jendela, membuat formulir dengan parameter {search:'test'}, dan mengirimkan formulir itu.

Untuk mengubah URL dan parameter, cukup atur panggilan terakhir ke post_to_url.

Strategi ini bisa sangat bagus jika Anda hanya perlu membuat bookmark sekali dan menggunakannya berkali-kali. Namun, itu tidak membuatnya sangat mudah untuk membuat bookmark baru jika Anda perlu melakukannya secara teratur.

StriplingWarrior
sumber
Apakah Anda tidak memerlukan 'sekitar pencarian di {search:' test '}?
Anton Daneyko
1
@mezhaka: Tidak. Karena ini sebenarnya sedang dievaluasi sebagai javascript, daripada string JSON, kutipan di sekitar nama properti adalah opsional kecuali nama properti menyertakan spasi atau karakter khusus.
StriplingWarrior
1
Terima kasih balasannya. Apakah Anda perlu url mengutip kunci saya: values? Seperti jika saya memiliki spasi atau karakter ASCII di kunci dan nilai saya apakah itu cukup untuk dikelilingi oleh '' atau apakah saya juga perlu mengurus mengutip simbol seperti ΓΆ?
Anton Daneyko
@mezhaka: Berikut aturannya: stackoverflow.com/a/9568622/120955 .
StriplingWarrior
4

Menggunakan jawaban oleh @StriplingWarrior, saya telah sedikit mengubah skrip untuk memiliki perilaku yang sama dengan bookmark normal dengan membuka bookmark di jendela yang sama

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

Dengan menggunakan alat ini di http://userjs.up.seesaa.net/js/bookmarklet.html Anda cukup menyalin dan menempelkan kode, mengubah url dan parameter, dan menambahkan bookmmarklet yang dihasilkan ke bookmark Anda. Ini cukup berguna untuk mengakses misalnya panel kontrol router Anda.

pobobart
sumber
4

Berkat jawaban dalam pertanyaan ini, saya menemukan pengaya cantik ini untuk Firefox: Bookmark POST . Tidak memiliki dokumentasi yang baik tetapi ini harus membantu Anda memulai:

Dengan bookmark itu, empat langkah mudah untuk permintaan POST yang telah di-bookmark (tidak diperlukan javascript):

  1. Buka halaman dengan formulir yang ingin Anda tandai dan isi formulir dengan cara "khas". Jangan kirim dulu.
  2. Buka Alat Pengembang Web -> Analisis Jaringan.
  3. Kirimkan formulir Anda. Kirim akan muncul di analisis jaringan. Di sana Anda dapat memilih "Edit dan kirim lagi" dan salin "Badan Permintaan".
  4. Buat Bookmark ke halaman formulir dan tambahkan string POSTDATA={YOUR_REQUEST_BODY_HERE}sebagai deskripsi bookmark .

Bagi saya ini jauh lebih mudah daripada bermain Javascript.

SebastianH
sumber
Jawaban yang sangat bagus tetapi tidak berhasil di Waterfox 56.2
Euri Pinhollow
3

Pendekatan paling sederhana:

Bookmarklet dengan formulir terisi dan pengisian otomatis

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

Kelemahan: Chromium akan mengirim URL halaman web saat ini sebagai pengarah HTTP. (Firefox dan IE tidak mau.)

Mengapa referensi penting? Tanpa mempertimbangkan masalah privasi akun, beberapa situs web akan memeriksa rujukan pada POST untuk melindungi diri mereka dari permintaan jahat yang dibuat oleh pos formulir iframe tersembunyi.

Pendekatan alternatif:

Dijelaskan di sini , ini sedikit lebih mudah dibaca tetapi membutuhkan file HTML di suatu tempat, penggunaannya akan seperti:

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

Saat bekerja melalui file yang disimpan secara lokal, referer tidak akan dikirim. Bahkan di Chromium.
Jika file akan ditempatkan di situs web jarak jauh maka referer akan dikirim dan akan berisi host situs web dan string kueri asli.

pengguna
sumber
2

The bookmarklet frmget bekerja untuk banyak situs yang acuh tak acuh terhadap metode http: menerapkan bookmarklet, mengirimkan formulir, penunjuk halaman hasil.

Untuk situs yang memang membutuhkan POST, ada ekstensi ini , yang tidak terlalu ramah pengguna. Anda dapat menggabungkannya dengan frmget: terapkan frmget, kirimkan formulir, bookmark halaman, salin parameter GET ke dalam bidang deskripsi, diawali dengan POSTDATA=.

Tobu
sumber
1

Saya memodifikasi sedikit skrip yang disediakan oleh @StriplingWarrior untuk menerima file HAR sebagai parameter. File HAR dapat disimpan dari Alat Pengembang Chrome (Ctrl + Shift + J).

Pertama buka halaman dengan data formulir yang sudah diposting, lalu klik kanan dokumen pertama pada tab Jaringan dan pilih "Salin entri sebagai HAR". Kemudian tempel konten pada skrip di bawah ini:

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

Simpan ini sebagai file html dan harus membuka formulir yang diposting. Ini tidak berfungsi jika situs menggunakan kondisi tampilan atau jika memeriksa perujuk.

bortao
sumber
0

Dari apa yang saya mengerti tentang posting, tidak ada cara untuk merekam data itu sendiri dan mengirimkannya kembali.

Saya sarankan mendapatkan add-on yang mengisi formulir untuk Anda lebih baik daripada firefox secara default.

Chrome sebenarnya memiliki pengenalan bentuk yang sangat kuat dan mengisi fitur bawaan, tapi saya yakin ada addon firefox yang melakukan hal yang sama.

Coba yang ini, terlihat menjanjikan: Form Saver Firefox Add-on

robertpateii
sumber
Namun sayangnya Chrome tidak menawarkan untuk menyimpan kata sandi untuk halaman HTTP AUTH generik.
qroberts
Lazarus lebih baik daripada penyelamat bentuk saat ini.
Tobu
0

Saya menggunakan ini Firefox Addon untuk penunjuk tindakan POST.

northben
sumber
0

Berdasarkan bookmarklet pengguna :

Ini tampaknya berfungsi untuk UPS dengan Firefox dan kata kunci untuk bilah pencarian (mis. "Ups XYZ" di mana XYZ kemudian masuk ke %splaceholder di dalam bookmarklet):

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

(perhatikan ini harus satu baris)

Lihat juga:

menangani
sumber