Autor Beitrag
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 955
Erhaltene Danke: 126

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE
BeitragVerfasst: Do 21.07.16 07:25 
Hallo Forum

Problemstellung:
Beim Versuch einen Quelltext einer Webseite herauszufiltern, bekomme ich zunächst einmal den Http 302 Fehler, sprich die Seite wurde weitergeleitet. Weise ich zuvor der idHttp Komponente die Eigenschaft HandleRedirects := true zu, bekomme ich den Http Fehler 404, also Seite nicht gefunden. Daraus werde ich nicht schlau, denn sowohl die vorgegebene Seite, als auch die weitergeleitete Seite existieren soweit.
Ich mach' nichts weiteres als:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
begin
  idHttp.HandleRedirects := true;
  s := idHttp1.Get('http://www. ...');
end;

Kann das jemand nachvollziehen?

_________________
„Nicht für das Leben, sondern für die Schule lernen wir.“ „Kürze die lange Rede, damit sie nicht verdächtig wirke!“
(Lucius Annaeus Seneca : 1 - 65 n. Chr)
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 304
Erhaltene Danke: 61

Win 7
Delphi XE5 Enterprise
BeitragVerfasst: Do 21.07.16 07:33 
Wie sollen wir das ohne URL nachvollziehen können?
Frühlingsrolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 955
Erhaltene Danke: 126

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE
BeitragVerfasst: Do 21.07.16 08:43 
Ist die Seite relevant, denn ich möchte das Forum nicht in meine teuflischen Machenschaften verwicklern. :twisted:
Kurz und gut geht es mir darum, ähnlich der Anwendung JDownloader, einen Downloadlink bereitzustellen, der vom Anbieter FileCrypt.cc kommt.
Dieser Anbieter macht nichts anderes, als einen Link einer FileSharing Seite aufzurufen und diese anzuzeigen.
Den Link versteckt er hinter einem Hash Wert, an dem man leicht herankommen kann.
Der komplette Downloadlink setzt sich somit aus 'http://filecrypt.cc/Link/HASH.html' zusammen, wobei beim Aufrufen aus einem x-beliebigen Browser, eine Weiterleitung erfolgt und man prompt zur vorgegeben FileSharing Seite kommt.
Setzt man dabei auf idHttp oder ein webbrowser ähnliches Control, erscheint stattdessen nur eine 404 Meldung.
Wenn es Anwendungen wie den JDownloader gibt, die dies umsetzen können, dann mach' ich irgendetwas falsch.

Sollte das dem Forum Team zu prickär sein, belassen wir es dabei, auch wenn es mir ein wenig widerstrebt. ;)

_________________
„Nicht für das Leben, sondern für die Schule lernen wir.“ „Kürze die lange Rede, damit sie nicht verdächtig wirke!“
(Lucius Annaeus Seneca : 1 - 65 n. Chr)
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1035
Erhaltene Danke: 60

Win7
D6 Prof, D7 Prof
BeitragVerfasst: Do 21.07.16 13:21 
Hey, ich kenne so ein änliches Verhalten mit anderen Servern. Ich habe dann nachgesehen was FF oder andere Browser als Header mitsenden und habe die Komponente angepasst. Schon ging es.

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Dubai ist wie ein Kind. Sporadisch gesehen ist es freundlich und fröhlich. Hat man regelmäßig mit ihm zu tuen kann es einen in den Wahnsinn treiben.

Für diesen Beitrag haben gedankt: Frühlingsrolle
Frühlingsrolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 955
Erhaltene Danke: 126

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE
BeitragVerfasst: Do 21.07.16 14:08 
Sag schonmal danke, das brachte mich ein wenig weiter:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
 -- response --
200 OK
Server:  nginx/1.6.2  ->> ist damit der Host gemeint ?
Date:  Thu, 21 Jul 2016 12:53:31 GMT
Content-Type:  text/html; charset=UTF-8
Transfer-Encoding:  chunked
Connection:  keep-alive
Expires:  Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control:  no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma:  no-cache
Set-Cookie:  lang=de; expires=Sat, 29-Oct-2016 12:53:31 GMT; Max-Age=8640000; path=/
Content-Encoding:  gzip


Den passenden User Agent habe ich auch schon festgelegt, jedoch konnte ich zu den markierten Stellen keine passende Eigenschaft im idHttp1.Request finden. Und bei Expires nimmt er mir jenes Zeitformat nicht an. Keine Ahnung wie es genau ausschauen sollte.
Auf jeden Fall bricht die Verbindung nach einer Minute ab, mit der Meldung "Disconnected Gracefully".

_________________
„Nicht für das Leben, sondern für die Schule lernen wir.“ „Kürze die lange Rede, damit sie nicht verdächtig wirke!“
(Lucius Annaeus Seneca : 1 - 65 n. Chr)
Frühlingsrolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 955
Erhaltene Danke: 126

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE
BeitragVerfasst: Fr 22.07.16 15:28 
Ok, ich hätte da wohl aufmerksamer lesen sollen. Der für mich relevante Header ist der "Anfrage Header", und der von mir beschriebene, ist der "Antwort Header". Beim Firefox Browser sind diese unter Rechtsklick, Seiteninformationen anzeigen, im Tab HEADER zu finden.

Die für mich im Moment wichtigsten Fragen wären, wie komme ich ohne Fremdanwendungen an den Request-Informationen heran und wenn ich sie mal habe, dürfte ich diese z.B. in einer TStringList zusammenführen und dann per idHttp.Get(Url, StringListe) abschicken?
Wenn ja, welcher der Varianten sollte funktionieren:

- Variante A

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
StringListe.Add('Request=GET/abc HTTP/1.1');
StringListe.Add('Host=def');
StringListe.Add('User-Agent=ghi');
usw.
s := idHttp.Get(Url, StringListe);

- Variante B

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
StringListe.Add('abc');
StringListe.Add('def');
StringListe.Add('ghi');
usw.
s := idHttp.Get(Url, StringListe);

_________________
„Nicht für das Leben, sondern für die Schule lernen wir.“ „Kürze die lange Rede, damit sie nicht verdächtig wirke!“
(Lucius Annaeus Seneca : 1 - 65 n. Chr)
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777
Erhaltene Danke: 17

Win7,10
Delphi XE7 Prof.
BeitragVerfasst: Mo 25.07.16 07:11 
Also ich habe das mal so gelöst gehabt

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  IdHTTP1.Request.AcceptEncoding := 'gzip, deflate, lzma, sdch';
  IdHTTP1.Request.AcceptLanguage :=  'de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4';
  IdHTTP1.Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
  IdHTTP1.Request.ContentType := 'text/html; charset=utf-8';
  IdHTTP1.Request.Accept := 'text/html, */*; q=0.01';
  IdHTTP1.Request.Host := 'http://premium.....de';
  IdHTTP1.Request.Connection := 'keep-alive';
  IdHTTP1.Request.Referer := 'http://www....de';
  IdHTTP1.Request.CustomHeaders.Add('X-Requested-With: XMLHttpRequest');


also das was du nicht anders unterbringst als CustomHeaders anhängen.

_________________
mfg. Joel

Für diesen Beitrag haben gedankt: Frühlingsrolle, hydemarie
Frühlingsrolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 955
Erhaltene Danke: 126

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE
BeitragVerfasst: Mo 25.07.16 18:56 
Danke für die Hilfestellung, JoelH!
So sollte es auch im Idealfall funktionieren, aber in meinem Fall sind auch JavaScripts involviert, die mich an der Ausführung hindern.

Zur näheren Erläuterung:

Der FileCript Anbieter stellt Container mit Links zu Dritt-FileSharing Anbietern bereit, die auf folgenden Seiten erreichbar sind:
ausblenden Quelltext
1:
2:
https://filecrypt.cc/Container/xxx.html
http://filecrypt.cc/Container/xxx.html

Darauf folgt eine Captcha Abfrage, die anschließend zu einer gleichnamigen Seite mit den zugehörigen Links führt.
Dieser Schritt lässt sich gut mit einem WebBrowser Control umsetzen, bis dahin.
Würde man einen der Links im WebBrowser Control ausführen, dann würde die Seite zunächst einmal zu einer leeren Seite führen, welche die Meldung 404 rechtfertigt.
Aber kurz danach wird ein neues IE Fenster gestartet, welches zur Seite des FileSharing Anbieter navigiert wird. Genau hinter dem bin ich her.

Würde man all dies im eigenen Browser ausführen, so würde man nach der Captcha Abfrage und nach dem Klick auf den jeweiligen Link eine Weiterleitung zur FileSharing Seite mitbekommen.

Die Link Elemente sehen dabei wie folgt aus:
ausblenden Quelltext
1:
2:
<button class="download" title="Download"
onclick="openLink('yyy', this);"></button>

Die Methode openLink ist in einem JavaScript definiert und sieht folgendermaßen aus:
ausblenden JavaScript-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var openLink = function(link_id, t, h) {
  if (typeof(h) == undefined || !h) {
    window.open(_DOMAIN.replace('https:''http:') + 'Link/' + link_id + '.html');
  } else {
    top.location.href = _DOMAIN.replace('https:''http:') + 'Link/' + link_id + '.html';
  }
  if (!t.hasClassName('singlebutton') && (typeof(h) == undefined || !h)) {
    if (t.hasClassName('stream'))
      t.addClassName('streamed').removeClassName('stream');
    else
      t.addClassName('downloaded').removeClassName('download');
  }
};

Somit müsste die Url, die mich zur FileSharing Seite führen sollte so aussehen:

ausblenden Quelltext
1:
http://filecrypt.cc/Link/yyy.html					

Sie führt mich jedoch beim idHttp.Get Aufruf zu der 404 Seite, und das obwohl der idHttp Komponente der Header angepasst und eine Weiterleitung mit .HandleRedirects := true ermöglicht wurde. Ein idCookieManager hängt auch noch dran.

Vielleicht könnte ich es besser nachvollziehen, wenn ich folgendes Verhalten der Seite verstehen würde:
Wenn im Browser A die Container Seite ausgeführt wird, und man anschließend manuell die Download-Url zusammenstellt, kann man diese Url mehrmals im Browser A ausführen, jedoch kein einziges Mal im Browser B, denn dort wird eine 404 Seite angezeigt.
Hat es irgendetwas mit den Cookies zu tun? Meine Browser sind nämlich so konfiguriert, dass nach einer Sitzung alle Daten gelöscht werden.

_________________
„Nicht für das Leben, sondern für die Schule lernen wir.“ „Kürze die lange Rede, damit sie nicht verdächtig wirke!“
(Lucius Annaeus Seneca : 1 - 65 n. Chr)
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777
Erhaltene Danke: 17

Win7,10
Delphi XE7 Prof.
BeitragVerfasst: Di 26.07.16 09:32 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:

Hat es irgendetwas mit den Cookies zu tun?

Es hört sich zumindest so an. Ich weiss jetzt nicht mit was du die Aufrufe mittracen tust. Ich nutze den Opera Browser und da kann man sich den gesamten Networktrafik bei einem Seitenaufruf anzeigen lassen. Mit allen Headerdaten, Datenrückgaben, Scirptaufrufen, Cookieanfragen etc.

Damit habe ich bisher alles nachprogrammiert bekommen was ich bisher gebraucht habe in dieser Hinsicht.

_________________
mfg. Joel
Frühlingsrolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 955
Erhaltene Danke: 126

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE
BeitragVerfasst: Di 26.07.16 10:53 
Opera 12.x habe ich zwar installiert, nur kenn' ich die von dir beschriebene Vorgehensweise nicht. Wie ermittelt man dort den Traffic-Verlauf?

_________________
„Nicht für das Leben, sondern für die Schule lernen wir.“ „Kürze die lange Rede, damit sie nicht verdächtig wirke!“
(Lucius Annaeus Seneca : 1 - 65 n. Chr)
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777
Erhaltene Danke: 17

Win7,10
Delphi XE7 Prof.
BeitragVerfasst: Di 26.07.16 12:19 
Opera 12.X? Ich hab Version 37 :shock:

Bei mir ists Rechte Maustaste über der Seite offnen, dann Element untersuchen. Dann geht ein Fenster auf wo du einen Reiter Netfork findest und da findest du dann den Verlauf, was so passiert. Da kannste dann auf die einzelnen Aufrufe klicken und erhälst Headerdaten, Cookiedaten etc.
Einloggen, um Attachments anzusehen!
_________________
mfg. Joel

Für diesen Beitrag haben gedankt: Frühlingsrolle
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777
Erhaltene Danke: 17

Win7,10
Delphi XE7 Prof.
BeitragVerfasst: Di 26.07.16 12:25 
Hier sieht man dann die Headerdaten usw. im Anhang
Einloggen, um Attachments anzusehen!
_________________
mfg. Joel

Für diesen Beitrag haben gedankt: Frühlingsrolle
Frühlingsrolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 955
Erhaltene Danke: 126

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE
BeitragVerfasst: Di 26.07.16 13:27 
Lass' dich von der Version nicht täuschen. Sie unterscheiden sich etwas im Design, aber nicht so sehr in der Funktionalität.

Gut, den Header habe ich schonmal. Sie sind, mal abgesehen vom User-Agent, ident zu denen im Firefox Browser. Wo trage ich die Cookie-Werte in der idHttp Komponente ein, unter .Request.CustomHeader?

_________________
„Nicht für das Leben, sondern für die Schule lernen wir.“ „Kürze die lange Rede, damit sie nicht verdächtig wirke!“
(Lucius Annaeus Seneca : 1 - 65 n. Chr)
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777
Erhaltene Danke: 17

Win7,10
Delphi XE7 Prof.
BeitragVerfasst: Di 26.07.16 13:42 
Also mit den Cookies mache ich eigentlich gar nichts, die kommen ja vom Server, da reicht es eigentlich dem idhttp-Teilchen eine Cookiekomponente zuzuordnen (was du ja schon gemacht hast, wie ich weiter oben las) , das funktionierte bei mir bisher automatisch richtig.

_________________
mfg. Joel
Frühlingsrolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 955
Erhaltene Danke: 126

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE
BeitragVerfasst: Di 26.07.16 14:01 
Nun gut, dann muss ich mir den Quelltext noch genauer anschauen, um zu verstehen, wie ich an die Weiterleitung herankomme. Bis dahin, vielen Dank für die Unterstützung. :wink:

_________________
„Nicht für das Leben, sondern für die Schule lernen wir.“ „Kürze die lange Rede, damit sie nicht verdächtig wirke!“
(Lucius Annaeus Seneca : 1 - 65 n. Chr)