Erster Webcrawler versuch..:/
Übersicht

Bobo2040Betreff: Erster Webcrawler versuch..:/ |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi
war eine Zeit lang Inaktiv wegen Präsentationen und sowas (10. Klasse ^-^) So und da wollte ich mal nen kleinen Webcrawler basteln aber er verbindet sich leider nicht zu Websites denke es liegt am TcpOpenStream() befehl das ich da irgendwas falsch gemacht habe oder sowas... Ihr könnt mir auch Tipps geben was ich besser machen kann ![]() BlitzBasic: [AUSKLAPPEN]
So ich habe jetzt ein wenig mit rumgespielt ![]() ![]() "cation: http://www.bing.com/ nochwas..." was bedeutet das ? was mache ich falsch? wenn ich mich zu google oder youtube verbinde lädt er permanent die CSS Styles ![]() Mfg Mfg |
||
- Zuletzt bearbeitet von Bobo2040 am Do, Mai 08, 2014 14:44, insgesamt einmal bearbeitet
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das liegt an mehreren Dingen...
Code: [AUSKLAPPEN] tcpstream=OpenTCPStream("http://www." + WaitLinks\LinkName$ + ".de",Port)
If tcpstream Then Print "Verbinde zu http://" + WaitLinks\LinkName$ + ".de .." WriteLine tcpstream,"GET / HTTP/1.1" WriteLine tcpstream,"Host: localhost" WriteLine tcpstream,"Connection: Keep-Alive" WriteLine tcpstream,"" Zuerst mal, der Port kann durchaus ein Problem machen. http-Anfragen gehen stets über Port 80. Dann musst du beim Aufbau eines TCP-Streams nur den Server angeben, zB www.blitzforum.de. Kein protokoll (wie hier http://) und keine sonstige Seiten-Anfrage (LinkName$ könnte ja auch sowas wie .../index.php sein. Das gehört dann im GET geschrieben.) Und zu guter letzt ist "Host: localhost" falsch. Für den Host musst du den Server angeben, zu dem du dich vorher bei OpenTCPStream ![]() In Summe würde ich raten, die Trennung zwischen TCP und HTTP nochmal genau anzuschauen (Wikipedia-Artikel reicht vollkommen ![]() mfG, Christoph |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay danke ![]() ja Funktioniert jetzt auch mit HTTP/1.1 ![]() so wenn ich einen User-Agent dazumache werde ich von manchen Seiten geblockt > youtube.com Dann steht da was von XSS-Protection: mode=1; blocked=1; oder sowas ![]() Und zum abschnitt mit den Instr() Mid() Left() Funktionen habe ich auch irgendwo was falsch aber ich komme nicht drauf...kann sich das jemand angucken ? Ansatz würde mir reichen ![]() und wenn ich mit zu bing.com Verbinde steht dort: caution: www.bing.com/nochwas in der Console wenn ich die Readline() Strings ausgebe :/ was bedeutet das ? Wie muss ich meinen User-Agent wählen ? Dachte an den Agent vom Google Bot aber das ist Illegal oder ? :'DDD Mfg |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: WriteLine tcpstream,"GET http://www." + WaitLinks\LinkName$ + ".de HTTP/1.0"
WriteLine tcpstream,"Host: localhost" Bei GET schreibst du den relativen Pfad ab dem Host-Namen hin. Bei Host den Namen des Hosts, an den du sendest. Wenn du z.B. diesen Thread anzeigen lassen willst, geht mit diesem Code: [AUSKLAPPEN] GET /forum/viewtopic.php?t=40014 HTTP/1.0
Host: www.blitzforum.de User-Agent: WasAuchImmer Connection: close Wenn du vorhast, die Verbindung sofort zu schließen, sende lieber Connection: close. ZEVS |
||
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay danke ![]() Aber aus irgendeinem Grund hört er nach dem </head> Tag auf zu "Downloaden" kann es sein das er nur 512bytes oder 1kb "runterladen" kann ? Weil das bei jeder seite ist.. bei google lädt er nur das CSS und dann fängt er wieder von vorne an das macht der Permanent...bei BlitzForum auch hier der Code : BlitzBasic: [AUSKLAPPEN]
Hoffe mir kann jemand weiter helfen... und was bedeutet nun dieses "caution: [WebsiteUrl]" ? caution heißt ja Achtung / Vorsicht... aber aus irgendeinem Grund weiß ich nicht was damit gemeint ist xD Will ja schließlich was lernen ![]() Mfg |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If ReadByte(tcpstream) Then
trash=ReadByte(tcpstream) Auch wenn das nur "trash" ist (eigentlich die Header-Infos.... Die durchaus nützlich sein können, wenn sie nicht mit "200 OK" anfangen -> Wikipedia mal wieder!) ... so liest du mit diesem Code 2 Bytes auf einmal aus. Und damit "überspringst" du irgendwas. Außerdem schließt du im Fehlerfall die TCP-Verbindung doppelt, was beim 2. mal zu einem Fehler führt (glaube ich). Nur so, was mir an deinem neuen Code aufgefallen ist. Zu deinem "caution" vermute ich mal, dass da noch mehr kommen würde, wenn du alles sauber ausliest. Dazu empfehle ich, erstens die Header zu beachten wie anfangs erwähnt (und zB "Bad Request"-Fehler zu entdecken.) und dann nach den Headern auf eine Leerzeile zu warten (bzw. einem Chr(10)). Danach alles auszulesen bis zum Eof. Halt wie das http-Protokoll aufgebaut is, damit muss man sich leider (gottseidank ^^) auseinander setzen ![]() mfG, Christoph |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group