Ich bin gerade dabei, einen Webproxy zu schreiben, also so etwas wie auf http://mirrorrr.appspot.com/
Alles andere habe ich neu geschrieben, nur das Modul um die ganzen Adressen umzuschreiben habe ich übernommen
(Es ist einfach sehr gut, weil es z.B. auch urls in css und so findet und ersetzt)
Mein Problem ist aber, dass die URL offensichtlich in der Adresszeile zu finden ist, sodass der Traffic leicht erkannt wird. Das hat dann eine Sperrung der Seite mit Filterlisten zur Folge und macht sie wertlos. Startseite habe ich neu geschrieben und dort auch die Proxyfunktion etwas versteckt, aber die URL zu verschlüsseln macht Probleme. Ich brauche auch keinen knacht-das-FBI-in-was-weis-ich-wie-vielen-Jahren-nicht-Algorythmus, ich hab einfach ein Caesar-chiffre verwendet, es soll halt nur nicht so offensichtlich sein, was da gerade passiert.
Mein Problem ist aber: Dadurch, dass mehrere reguläre Ausdrücke verwendet werden, werden einige Teile der URL (Vor dem ersten /) mehrfach verschlüsslt, andere nur einmal (nach dem ersten /).
Code: Alles auswählen
REP = list(string.digits+ string.letters)
## Die ganzen regulären Ausdrücke!
def crypt(url, mode):
ret = []
if mode: fac = 1
else: fac = -1
for ch in url:
if ch in REP:
i1 = REP.index(ch)
i1 = (i1+42*fac)%len(REP)
ret.append(REP[i1])
else:
ret.append(ch)
return "".join(ret)
class Replacer(object):
def __init__(self,r):
self.r = r
def __call__(self,match):
url = match.groupdict()["url"]
ret = match.expand(self.r)
return ret.replace(url,crypt(url,True))
def TransformContent(base_url, accessed_url, content):
url_obj = urlparse.urlparse(accessed_url)
accessed_dir = os.path.dirname(url_obj.path)
if not accessed_dir.endswith("/"):
accessed_dir += "/"
for pattern, replacement in REPLACEMENT_REGEXES:
fixed_replacement = replacement % {
"base": base_url,
"accessed_dir": accessed_dir,
}
content = re.sub(pattern, Replacer(fixed_replacement), content)
return content
Den gesamten Quelltext der Originalmoduls findet ihr auf http://code.google.com/p/mirrorrr/sourc ... content.py
Danke!