Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wie http-Server bestimmten Browser vorgaukeln? (https://www.delphipraxis.net/175878-wie-http-server-bestimmten-browser-vorgaukeln.html)

Schwedenbitter 25. Jul 2013 12:18

Wie http-Server bestimmten Browser vorgaukeln?
 
Liste der Anhänge anzeigen (Anzahl: 1)
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

jaenicke 25. Jul 2013 12:22

AW: Wie http-Server bestimmten Browser vorgaukeln?
 
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...

Schwedenbitter 26. Jul 2013 08:37

AW: Wie http-Server bestimmten Browser vorgaukeln?
 
Danke für die Antwort.
Zitat:

Zitat von jaenicke (Beitrag 1222648)
Das Entscheidende ist da der Useragent. Den musst du auf einen Wert setzen, der einem Browser entspricht.

Ich benutze ja die Funktion
Delphi-Quellcode:
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
Delphi-Quellcode:
'InetURL:/1.0'
einfach bloß durch z.B.
Delphi-Quellcode:
'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.

jaenicke 26. Jul 2013 16:10

AW: Wie http-Server bestimmten Browser vorgaukeln?
 
Zitat:

Zitat von Schwedenbitter (Beitrag 1222744)
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;

sx2008 27. Jul 2013 06:16

AW: Wie http-Server bestimmten Browser vorgaukeln?
 
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
Delphi-Quellcode:
'InetURL:/1.0'
einfach bloß durch z.B.
Delphi-Quellcode:
'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'
ersetzen, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 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