Hallo,
das ist mein erster Thread im Forum.
Ich bin gerade dabei eine Art Bot zu schreiben, der sich im Internet so autentisch wie möglich wie herkömmliche Browser (IE, Firefox, ...) verhalten soll.
Ich verwende mechanize, clientForm und urllib2.
Standardsachen, wie das Ändern des User-Agents, oder andere HTTP-header habe ich schon hinbekommen. Jetzt hängt es noch im Detail.
Ich habe z.B. mitbekommen, dass Python mit urllib2 eine HTTP-Verbindung über den Source-Port 1604 (icabrowser) aufbaut. Im Firefox z.B. ist es Port 1781 (answersoft-lm). Ich habe aber nirgends eine Stelle finden können, an der man den Source Port einstellen kann. Gibt es hierfür irgendeine Schnittstelle?
Außerdem habe ich festgestellt, dass die Zeilenumbrüche im HTTP-Protokoll auf einem Windows Rechner (wie üblich) \r\n ist und auf einem Linux-Rechner nur \n. Lässt sich daraus auf Server-Seite auf das Betriebssystem schließen? Wenn ja, kann man die Zeilenumbrüche manipulieren?
Das sind sehr detalierte und wahrscheinlich auch schwierig zu beantwortende Fragen, aber ich hoffe, dass ihr mir helfen könnt.
HTTP - Web - Bot
Der Port mit dem die Verbindung rausgeht wird in der Regel nicht vorgegegen, sondern es wird einfach ein freier Port vom Betriebssystem ausgewählt. Ich weiss nicht wo Du die Namen für die Ports her hast, aber über 1000 sind die Portnummern nicht wirklich standardisiert und die Angaben dürften auch eher für lauschende Ports denn für sendende gelten.
Eigentlich muss es immer \r\n sein, denn das ist, was das HTTP-Protokoll vorschreibt. Sollte das nicht der Fall sein, ist IMHO die Python-Implementierung des Client kaputt.Außerdem habe ich festgestellt, dass die Zeilenumbrüche im HTTP-Protokoll auf einem Windows Rechner (wie üblich) \r\n ist und auf einem Linux-Rechner nur \n.
Stefan
Danke für die Antworten.
Das mit \r\n habe ich nicht wirklich getestet, sondern es nur vermutet. Wenn es standartisiert ist, dann ist es ja gut so.
Das mit \r\n habe ich nicht wirklich getestet, sondern es nur vermutet. Wenn es standartisiert ist, dann ist es ja gut so.
Die Namen für die Ausgehenden Ports habe ich von meinem Wireshark.Ich weiss nicht wo Du die Namen für die Ports her hast
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
``/etc/services`` enthält durchaus auch gerne "seltsame" Protokolle. Naja, aber BlackJack hat schon recht, was da für ein Port verwendet wird, ist recht egal.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice