Regra de redirecionamento Privoxy para a Wikipedia

3

Eu tenho algumas regras Privoxy, que podem redirecionar HTTP [en, de] tráfego HTTP para HTTPS: (uma pequena parte do arquivo "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

Então você tem o problema: existe alguma maneira de colocar um "regexp" ou algo assim: "en", "de"? Existem centenas de outras línguas, acho que é uma má solução anotar todas elas.

Há outra questão: a minha solução é boa até agora? Estou perguntando porque, se eu visitar o link tudo bem, está usando HTTPS. MAS se eu clicar na imagem: link está usando HTTP! Então isso não é bom. São as imagens em um servidor somente HTTP, ou eu posso escrever outra regra de redirecionamento para ver as fotos em HTTPS?

    
por LanceBaynes 20.03.2011 / 16:56

1 resposta

2

A ação de redirecionamento do Privoxy usa expressões regulares limitadas para corresponder e reescrever urls. Felizmente, backreferences são suportados. Você pode reescrever sua correspondência de redirecionamento de forma a suportar códigos de idioma de duas letras, além do código de três letras que você mencionou:

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

Eu substituí seu código de idioma original de duas letras por "(.. | war)". Os parênteses criam uma referência anterior que pode ser referida posteriormente como "$ 1". Os dois pontos correspondem a dois caracteres. O caractere de pipe é um operador "ou" lógico, fazendo correspondências contra cadeias de caracteres em ambos os lados. Você pode usar o pipe várias vezes em um grupo de correspondência. Você pode usar várias referências anteriores em uma única regex. Incrementar o número usado para se referir ao jogo (ou seja, $ 2, $ 3, etc).

O apêndice do manual do usuário do Privoxy descreve o suporte a expressões regulares e há exemplos mais úteis.

Para sua segunda pergunta, você precisará escrever ações de redirecionamento adicionais para cada URL que deseja redirecionar para HTTPS. Isso será trabalhoso, pois você terá que ajustar seus regexps para os padrões de URL de cada site, e o site deve oferecer o conteúdo via SSL também.

    
por 21.03.2011 / 00:56