2014-05-04 17 views
0

所以這裏是我的情況:如何從瀏覽器調用數百個PHP頁面?

我溫和一個相當愚蠢的控制面板論壇。有一個報告列表(垃圾郵件等),並在每個條目旁邊有一個「標記爲已讀」按鈕。事情是,沒有「標記爲已讀」按鈕。您必須手動單擊數百個按鈕中的每一個。

我已經注意到按鈕打開PHP頁面下面的方案:

http://www.example.com/mark_as_read.php?id=1 
http://www.example.com/mark_as_read.php?id=2 
http://www.example.com/mark_as_read.php?id=3 
... 
http://www.example.com/mark_as_read.php?id=100 

正如你看到的,唯一改變的事情是ID參數。

我的印象是,我可以做某種批量調用。

現在,我不是任何一種網絡程序員。不過,我知道如何使用Java等將HTTP請求發送到網站。所以我繼續寫下了一個小程序,該程序將該鏈接調用了100次(每次迭代增加ID號)。

它不起作用,因爲您需要作爲主持人進行身份驗證。該網站通過瀏覽器的cookies來確定這一點。我對此不太瞭解,所以我放棄了我的Java解決方案。

這似乎是我需要從我的瀏覽器執行這些調用,以便網站可以使用我的cookie來允許操作。

我該如何做到這一點?我如何從瀏覽器中調用數百個PHP頁面?


一些注意事項:

  • 我沒有自己的網站,並沒有進入到他們的內部。
  • 我可以使用任何瀏覽器都行。鉻/ Safari瀏覽器/ IE。
  • 如果您未通過身份驗證(因此您需要使用瀏覽器),PHP調用將不起作用。
  • 我對呼叫的PHP輸出不感興趣。我只想要執行PHP代碼。
  • 如果我的瀏覽器沒有打開100個標籤,那將是非常棒的。

回答

3

如果您只需要一個快速而骯髒的解決方案,您可以在瀏覽器JavaScript控制檯中注入一些JavaScript函數。

赦免冗長 - 它是編譯好的CoffeeScript。現在

var mark_all_as_read, mark_as_read; 

mark_as_read = function(id) { 
    var request; 
    request = new XMLHttpRequest(); 
    request.open("get", "http://www.example.com/mark_as_read.php?id=" + id); 
    return request.send(); 
}; 

mark_all_as_read = function(ids) { 
    var id, _i, _len, _results; 
    _results = []; 
    for (_i = 0, _len = ids.length; _i < _len; _i++) { 
    id = ids[_i]; 
    _results.push(mark_as_read(id)); 
    } 
    return _results; 
}; 

,你應該能夠調用mark_as_read(123)mark_all_as_read([123, 456])從您的控制檯。

請注意,您的虛擬主機可能不會批准您同時發送數百個請求。在這種情況下,您可以添加第三個參數false方法調用request.open。這會在執行下一個請求之前通過等待每個請求完成而顯着減慢循環。

0

編寫一個Chrome插件,爲您做到這一點。插件基本上是一塊Javascript,它運行在您所在頁面的範圍內,因此您可以輕鬆閱讀項目列表並調用URL。我認爲(但我不確定)由插件執行的任何Ajax請求也在頁面範圍內運行,因此不受同一起源策略的影響。

你需要一些樣板代碼,但幸運的是,有很多教程,讓你開始:

你不必須註冊你的插件,如果它只是爲你。您可以從剛纔您所做的來源安裝它:

否則,你可能會打開一個單獨的標籤頁的報告。也許這很不方便,但是大多數瀏覽器都有一個'關閉此選項卡右側的所有標籤',因此您可以通過兩次點擊關閉所有標籤。

相關問題