HTTP - Web - Bot

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Juesch
User
Beiträge: 2
Registriert: Samstag 7. Februar 2009, 11:44

Samstag 7. Februar 2009, 11:55

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.
BlackJack

Samstag 7. Februar 2009, 12:54

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.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Samstag 7. Februar 2009, 13:04

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
Juesch
User
Beiträge: 2
Registriert: Samstag 7. Februar 2009, 11:44

Samstag 7. Februar 2009, 13:21

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 7. Februar 2009, 13:35

``/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 Modvoice
Antworten