AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Wie http-Server bestimmten Browser vorgaukeln?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie http-Server bestimmten Browser vorgaukeln?

Ein Thema von Schwedenbitter · begonnen am 25. Jul 2013 · letzter Beitrag vom 27. Jul 2013
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Wie http-Server bestimmten Browser vorgaukeln?

  Alt 25. Jul 2013, 13:18
Hallo,

ich benutze bereits seit längerem erfolgreich die Function URL2HTML, die ich vor Jahren in den Weiten des Netzes gefunden hatte. Scheinbar ist sie nicht mehr existent; jedenfalls hilft mir die weltgrößte Suchmaschine nicht, weshalb ich den Quelltext angehängt habe. Ich frage damit Seiten aus meinem Intranet und auch aus dem Internet ab.

Wenn ich aber z.B. versuche, die Seite von swoodoo zu scrapen, speichert er mir die Seite als html. Allerdings steht bloß für mich nicht brauchbare Werbung drin und der Hinweis:
"Der von Ihnen verwendete Webbrowser funktioniert möglicherweise nicht wie erwartet.
• Internet Explorer 8 installieren
• Firefox installieren
• Safari installieren
• Chrome installieren"

Kann ich - und falls ja wie - der Abfrage irgendwie mitgeben, dass ich ein aktueller Browser (FF22, IE11 etc.) bin?

Gruß & Dank, Alex
Angehängte Dateien
Dateityp: zip Flugsuche.zip (1,8 KB, 15x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Wie http-Server bestimmten Browser vorgaukeln?

  Alt 25. Jul 2013, 13:22
Das Entscheidende ist da der Useragent. Den musst du auf einen Wert setzen, der einem Browser entspricht.
Falls das bei deiner Funktion nicht geht, würde ich Indy und TIdHttp empfehlen...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Wie http-Server bestimmten Browser vorgaukeln?

  Alt 26. Jul 2013, 09:37
Danke für die Antwort.
Das Entscheidende ist da der Useragent. Den musst du auf einen Wert setzen, der einem Browser entspricht.
Ich benutze ja die Funktion InternetOpen(); . Wenn ich das hier richtig verstehe, dann kann ich den Useragent damit ohne weiteres setzen. Hier habe ich dazu auch etwas gefunden. Allerdings habe ich Verständnisprobleme und möchte nicht ewig mit trial and error experimentieren.
In meinem Programm müsste ich doch dann den String 'InetURL:/1.0' einfach bloß durch z.B. 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)' ersetzen, oder?

Zitat:
Falls das bei deiner Funktion nicht geht, würde ich Indy und TIdHttp empfehlen...
Ich seit Jahrzehnten Gelegenheitsprogrammierer, nutze eine kostenfreie Version von TurboDelphi, wo man keine Komponenten und damit die Indy nicht installieren kann. Ich sehe mich intellektuell auch nicht in der Lage, die Komponenten zur Laufzeit vollständig und richtig von Hand zu initialisieren.
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Wie http-Server bestimmten Browser vorgaukeln?

  Alt 26. Jul 2013, 17:10
Ich seit Jahrzehnten Gelegenheitsprogrammierer, nutze eine kostenfreie Version von TurboDelphi, wo man keine Komponenten und damit die Indy nicht installieren kann. Ich sehe mich intellektuell auch nicht in der Lage, die Komponenten zur Laufzeit vollständig und richtig von Hand zu initialisieren.
Pfade zum Quelltext von Indy in den Bibliothekspfad packen und dann so benutzen:
Delphi-Quellcode:
uses
  IdHttp;

var
  HttpLoader: TIdHttp;
  PageContents: String;
begin
  HttpLoader := TIdHttp.Create;
  try
    PageContents := HttpLoader.Get('http://www.example.com');
  finally
    HttpLoader.Free;
  end;
end;
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Wie http-Server bestimmten Browser vorgaukeln?

  Alt 27. Jul 2013, 07:16
Also es gibt eigentlich keinen Grund auf Indy zu wechseln wenn man ausschlieslich HTTP/HTTPS machen möchte.
Mit Indy holt man sich eine Unmenge von Units auf den Rechner, von denen man aber nur einen Bruchteil für HTTP benötigt.
Um mit WinInet den UserAgent zu setzen kannst du die Funktion HttpAddRequestHeaders() verwenden.

Ungefähr so:
Delphi-Quellcode:
if not HttpAddRequestHeaders(
  hRequest,
  'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0'#13#10,
  -1,
  HTTP_ADDREQ_FLAG_ADD or HTTP_ADDREQ_FLAG_REPLACE
  ) then
  RaiseLastWin32Error;
PS:
ich sehe gerade, dass es auch so wie von dir vorgeschlagen gehen müsste:
Zitat:
In meinem Programm müsste ich doch dann den String 'InetURL:/1.0' einfach bloß durch z.B. 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)' ersetzen, oder?
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz