Làm cách nào để lưu dấu trang trong Firefox với dữ liệu POST?


23

Tôi muốn lưu dưới dạng Firefox đánh dấu một trang không thể truy cập bằng GET. Cách duy nhất để lấy lại trang là gửi một số dữ liệu POST.

Ví dụ: tôi muốn đánh dấu trang theo dõi bưu kiện Chronopost , trang này chỉ cho phép POST để nhập số bưu kiện.

Có ai biết một tiện ích mở rộng Firefox, hoặc một số kỹ thuật khác, cho phép tôi làm điều này không?


Chỉ là một ghi chú đam mê: NHẬN các yêu cầu không cần thay đổi dữ liệu, đó là lý do tại sao bạn có thể đánh dấu chúng và có thể gọi chúng bao nhiêu lần tùy thích. Yêu cầu POST được phép thay đổi trạng thái trên máy chủ, đó là lý do tại sao chúng không dễ dàng được đánh dấu. Trên các liên kết POST mà bạn đánh dấu, hãy nghĩ xem nếu gọi chúng nhiều lần sẽ gây ra vấn đề, chẳng hạn như mua thêm một mặt hàng từ Amazon.
Rich Homolka

Câu trả lời:


20

Sử dụng bookmarklet. Ví dụ: bạn có thể sử dụng công cụ tại http://userjs.up.seesaa.net/js/bookmarklet.html để tạo bookmarklet với mã sau:

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

Sau đó sử dụng liên kết bookmarklet được tạo làm dấu trang trong trình duyệt yêu thích của bạn. Khi bạn bấm vào nó, nó sẽ mở một cửa sổ, tạo một biểu mẫu với các tham số {search:'test'}và gửi biểu mẫu đó.

Để thay đổi URL và tham số, chỉ cần điều chỉnh cuộc gọi cuối cùng đến post_to_url.

Chiến lược này có thể tuyệt vời nếu bạn chỉ cần tạo bookmark một lần và sử dụng nó rất nhiều lần. Tuy nhiên, nó không làm cho việc tạo dấu trang mới trở nên cực kỳ dễ dàng nếu bạn cần làm điều đó một cách thường xuyên.


Bạn không cần 'tìm kiếm xung quanh trong {search:' test '}?
Anton Daneyko

1
@mezhaka: Không. Bởi vì điều này thực sự được đánh giá là javascript, thay vì chuỗi JSON, các trích dẫn xung quanh tên thuộc tính là tùy chọn trừ khi tên thuộc tính bao gồm khoảng trắng hoặc ký tự đặc biệt.
StriplingWar Warrior

1
Cảm ơn vi đa trả lơi. Bạn có nếu tôi cần url trích dẫn khóa của tôi: giá trị? Giống như nếu tôi có khoảng trắng hoặc các ký tự không phải ASCII trong các khóa và giá trị của mình thì có đủ để nó được bao quanh bởi '' hay tôi cũng cần phải quan tâm đến việc trích dẫn các ký hiệu như ö?
Anton Daneyko

@mezhaka: Dưới đây là các quy tắc: stackoverflow.com/a/9568622/120955 .
StriplingWar Warrior

4

Sử dụng câu trả lời của @StriplingWar Warrior, tôi đã thay đổi tập lệnh một chút để có hành vi giống như các dấu trang thông thường bằng cách mở dấu trang trên cùng một cửa sổ

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

Sử dụng công cụ trong http://userjs.up.seesaa.net/js/bookmarklet.html bạn có thể chỉ cần sao chép và dán mã, thay đổi url và tham số và thêm bookmmarklet được tạo vào dấu trang của bạn. Điều này khá hữu ích để truy cập ví dụ bảng điều khiển bộ định tuyến của bạn.


4

Nhờ các câu trả lời trong câu hỏi này, tôi đã tìm thấy tiện ích bổ sung tuyệt đẹp này cho Firefox: Bookmark POST . Nó thiếu một tài liệu tốt nhưng điều này sẽ giúp bạn bắt đầu:

Với dấu trang đó, bốn bước dễ dàng cho yêu cầu POST được đánh dấu của bạn (không yêu cầu javascript):

  1. Mở trang với biểu mẫu bạn muốn đánh dấu và điền vào biểu mẫu theo cách "điển hình". KHÔNG nộp chưa.
  2. Mở Công cụ dành cho nhà phát triển web -> Phân tích mạng.
  3. Gửi mẫu của bạn. Việc gửi sẽ hiển thị trong các phân tích mạng. Ở đó bạn có thể chọn "Chỉnh sửa và gửi lại" và sao chép "Thân yêu cầu".
  4. Tạo một Bookmark vào trang mẫu và thêm chuỗi POSTDATA={YOUR_REQUEST_BODY_HERE}như mô tả dấu trang .

Đối với tôi đây là cách dễ dàng hơn so với sử dụng Javascript.


Câu trả lời tuyệt vời nhưng nó không hoạt động trong Waterfox 56.2
Euri Pinhollow

3

Cách tiếp cận đơn giản nhất:

Bookmarklet với hình thức điền và tự động tải

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

Nhược điểm: Chromium sẽ gửi URL trang web hiện tại dưới dạng tham chiếu HTTP. (Firefox và IE thì không.)

Tại sao người giới thiệu quan trọng? Không tính đến các vấn đề về quyền riêng tư, một số trang web sẽ kiểm tra người giới thiệu trên POST để bảo vệ bản thân khỏi các yêu cầu độc hại được thực hiện bởi bài đăng mẫu iframe ẩn.

Cách tiếp cận khác:

Được mô tả ở đây , nó dễ đọc hơn một chút nhưng cần tệp HTML ở đâu đó, cách sử dụng sẽ như sau:

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

Khi làm việc thông qua tệp được lưu cục bộ, tham chiếu sẽ không được gửi. Ngay cả trong Chromium.
Nếu tệp sẽ được đặt trên một trang web từ xa thì tham chiếu sẽ được gửi và sẽ chứa máy chủ trang web và chuỗi truy vấn ban đầu.


2

Các bookmarklet frmget công trình cho nhiều trang web mà không quan tâm đến phương pháp http: áp dụng các bookmarklet, gửi biểu mẫu, đánh dấu trang kết quả.

Đối với các trang web yêu cầu POST, có phần mở rộng này , không thân thiện với người dùng. Bạn có thể kết hợp nó với frmget: áp dụng frmget, gửi biểu mẫu, đánh dấu trang, sao chép các tham số GET vào trường mô tả, có tiền tố POSTDATA=.


1

Tôi đã sửa đổi một chút tập lệnh được cung cấp bởi @StriplingWar Warrior để chấp nhận tệp HAR làm tham số. Tệp HAR có thể được lưu từ Công cụ dành cho nhà phát triển của Chrome (Ctrl + Shift + J).

Đầu tiên mở trang với dữ liệu biểu mẫu đã được đăng, sau đó nhấp chuột phải vào tài liệu đầu tiên trên tab Mạng và chọn "Sao chép mục nhập dưới dạng HAR". Sau đó dán nội dung vào tập lệnh bên dưới:

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

Lưu tệp này dưới dạng tệp html và nó sẽ mở biểu mẫu đã đăng. Điều này không hoạt động nếu trang web sử dụng viewstate hoặc nếu nó kiểm tra người giới thiệu.



0

Từ những gì tôi hiểu về bài đăng, không có cách nào để tự ghi lại dữ liệu đó và gửi lại.

Tôi khuyên bạn nên có một tiện ích bổ sung điền vào các biểu mẫu cho bạn tốt hơn so với firefox theo mặc định.

Chrome thực sự có tính năng nhận dạng và điền vào biểu mẫu rất mạnh mẽ, nhưng tôi chắc chắn có một addon firefox thực hiện điều tương tự.

Hãy thử cái này, nó có vẻ đầy hứa hẹn: Add-on Form Saver Firefox


Nhưng thật đáng buồn, Chrome không cung cấp lưu mật khẩu cho các trang HTTP AUTH chung.
qroberts

Lazarus tốt hơn so với hình thức tiết kiệm hiện nay.
Tobu

0

Tôi sử dụng này Firefox Addon để đánh dấu những hành động POST.


0

Dựa trên bookmarklet của người dùng :

Điều này dường như hoạt động cho UPS với Firefox và từ khóa cho thanh tìm kiếm (ví dụ: "up XYZ" trong đó XYZ sau đó đi vào %strình giữ chỗ bên trong 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>'

(lưu ý đây phải là một dòng)

Xem thêm:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.