Linux

維基百科的 Privoxy 重定向規則

  • March 22, 2011

我有一些 Privoxy 規則,可以重定向 HTTP Wikipedia

$$ en,de $$到 HTTPS 的流量:(來自“user.action”文件的一小部分)

{ +redirect{s@http://en.wikipedia.org/wiki/@https://secure.wikimedia.org/wikipedia/en/wiki/@} }
.en.wikipedia.org

{ +redirect{s@http://de.wikipedia.org/wiki/@https://secure.wikimedia.org/wikipedia/de/wiki/@} }
.de.wikipedia.org

所以你得到了問題:有什麼辦法可以將“regexp”或其他東西放在:“en”,“de”?還有數百種其他語言,我認為將它們全部寫下來是一個糟糕的解決方案。<

還有一個問題:到目前為止我的解決方案好嗎?我問這個是因為如果我訪問https://secure.wikimedia.org/wikipedia/en/wiki/File:Nokota_Horses_cropped.jpg 沒關係,它使用的是 HTTPS。但是,如果我點擊圖片: http: //upload.wikimedia.org/wikipedia/commons/d/de/Nokota_Horses_cropped.jpg 它使用的是 HTTP!所以這不好。圖片是否在僅 HTTP 伺服器上,或者我可以編寫另一個重定向規則以在 HTTPS 中查看圖片?

Privoxy 的重定向操作使用有限的正則表達式來匹配和重寫 url。幸運的是,支持反向引用。您可以重寫重定向匹配以支持兩個字母的語言程式碼,以及您提到的單個三個字母的程式碼:

{ +redirect{s@http://(..|war).wikipedia.org/wiki/@https://secure.wikimedia.org/wikipedia/$1/wiki/@} }
.wikipedia.org

我已經用“(..|war)”替換了你原來的兩個字母的語言程式碼。括號創建一個反向引用,以後可以稱為“ $ 1". The two dots match any two characters. The pipe character is a logical “or” operator, making matches against strings on either side. You can use the pipe multiple times within a match group. You can use multiple backreferences in a single regex. Increment the number used to refer to the match (ie. $ 2、3 美元等)。

Privoxy 使用者手冊附錄描述了對正則表達式的支持,並且那裡有更多有用的範例。

對於第二個問題,您必須為要重定向到 HTTPS 的每個 url 編寫額外的重定向操作。這會很麻煩,因為您必須針對每個站點的 url 模式調整正則表達式,並且站點當然也必須通過 SSL 提供內容。

引用自:https://unix.stackexchange.com/questions/9737