2012-04-21 51 views

回答

8

webRequest API可能是你所需要的這個代碼放在你的背景頁:

chrome.webRequest.onBeforeRequest.addListener(
    function(details) { 
     if(details.url == "http://www.google.com/") 
      return {redirectUrl: "http://www.google.com/?q=defaultquery" }; 
    }, 
    {urls: ["http://www.google.com/*"]}, 
    ["blocking"]); 

這是重定向訪問http://www.google.com/http://www.google.com/?q=defaultquery一個非常具體的規則,但我認爲你CA ñ瞭解如何擴展它以包含更多功能。

請注意,這將重新路由全部嘗試達到http://www.google.com/,包括Ajax請求和iframe。

每文檔,你將需要添加webRequestwebRequestBlocking權限,與每個主機的主機權限,沿着你打算攔截:

"permissions": [ 
    "webRequest", 
    "webRequestBlocking", 
    "*://*.google.com/", 
    ... 
], 
+0

哪個文件應該我寫這篇文章的代碼,我們如何添加權限此。 – anwerj 2015-12-08 17:39:46

+1

@anwerjunaid從上面的文字:「代碼進入你的背景頁面。」必要的權限在[webRequest文檔的第一段](http://code.google.com/chrome/extensions/webRequest.html)中有介紹,我已經將其鏈接到上面。您需要針對要攔截的每個網站的「webRequest」,「webRequestBlocking」和主機權限。 – apsillers 2015-12-08 17:43:08

1

這是一個老問題仍然我回答它爲未來的讀者。

查詢參數的修改有點棘手,因爲您可以在無限循環中終止並且chrome/firefox可以檢測到它並處理請求Url的當前狀態。

我在Chrome擴展Requestly,用戶使用Replace Rulewww.google.com?q=query更換www.google.com或沒有類似的東西遇到這種情況。

這種方法的問題是瀏覽器可能會在添加查詢參數後攔截請求url,因此參數將被多次添加並損壞url。因此,您必須確保以下兩項之一: -

  1. 一旦將請求重定向,就不要攔截請求。
  2. 檢查參數是否已經存在,不要重定向。

正如@apsillers在他的回答中指出的那樣,您必須使用webRequest API來對URL進行任何修改。請看看他的answer 並相應地編寫你的代碼。

爲了以防萬一,您正在尋找已有的解決方案,請考慮嘗試Requestly's Query Parameter Rule。下面是它是如何看起來像一個截圖: -

enter image description here

對於Firefox,你可以下載Requestly from its home page.

相關問題