Seite 1 von 1

URLs für Webproxy umschreiben

Verfasst: Donnerstag 7. Februar 2013, 18:34
von Armageddon
Hallo!

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
Wenn ihr aber sagt, ich verwende besser ein ganz anderes Modul, ok.. Es muss nur auf Appengine lauffähig sein!

Den gesamten Quelltext der Originalmoduls findet ihr auf http://code.google.com/p/mirrorrr/sourc ... content.py

Danke!

Re: URLs für Webproxy umschreiben

Verfasst: Freitag 8. Februar 2013, 10:25
von /me
Ich habe mir den Code jetzt nicht genauer angesehen. Da du aber einfach nur grundsätzlich den Text etwas verschleiern möchtest könntest du als Alternative einfach Base64 verwenden. Das Modul existiert und funktioniert.

Re: URLs für Webproxy umschreiben

Verfasst: Freitag 8. Februar 2013, 15:17
von Armageddon
Hab ich auch schon drüber nachgedacht, ist aber nicht die Lösung meines Problems.

Das Problem ist, dass einige Links 2 mal erkannt werden und dann Probleme machen, da sie ja auch 2 mal verschlüsselt wurden sind - egal in welchem verfahren.

Re: URLs für Webproxy umschreiben

Verfasst: Freitag 8. Februar 2013, 15:25
von BlackJack
@Armageddon: Du hast halt das wichtigste weg gelassen. Die regulären Ausdrücke zum erkennen von URLs sind halt fehlerhaft wenn sie nicht eindeutig sind. Reparier das und dann werden auch keine Links mehrfach verschlüsselt. :-)