Seite 1 von 1

HTTP - Web - Bot

Verfasst: Samstag 7. Februar 2009, 11:55
von Juesch
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.

Verfasst: Samstag 7. Februar 2009, 12:54
von BlackJack
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.

Verfasst: Samstag 7. Februar 2009, 13:04
von sma
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.
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.

Stefan

Verfasst: Samstag 7. Februar 2009, 13:21
von Juesch
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.

Ich weiss nicht wo Du die Namen für die Ports her hast
Die Namen für die Ausgehenden Ports habe ich von meinem Wireshark.

Verfasst: Samstag 7. Februar 2009, 13:35
von Leonidas
``/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.