Entwickler-Ecke

Internet / Netzwerk - Zwei Indy Instanzen zum Download einer Datei ?


Blamaster - Mo 26.07.10 15:01
Titel: Zwei Indy Instanzen zum Download einer Datei ?
Hi,

ich nutze momentan 2 Indy Instanzen eine in einer dll die Andere im Hauptprogramm.

Die Indy in der dll bereitet den Downloadlink vor. Liest ihn aus usw.

Die im Hauptprogramm soll dann nur noch den vorbereiteten Link aus der dll laden.

Problem ist dabei, das der Server von dem geladen werden soll den Download mit der zweiten Indy nicht akzeptiert und eine 'HTTP 1.1/403 forbidden' wirft.

Wenn ich den Link gleich mit der ersten Indy lade funktioniert alles.

Welche Daten muss die Erste der zweiten Indy übergeben damit der Download auch mit dieser klappt ?

Mfg Blamaster


glotzer - Mo 26.07.10 17:18

versuche es doch einfach...


Blamaster - Mo 26.07.10 17:26

Hi,

probieren wird schwer wenn man keinerlei Idee hat welche Daten von Relevanz sein können.

Mfg Blamaster


Narses - Mo 26.07.10 18:09

Moin!

Ich rate mal: die Cookies sind in der zweiten Instanz nicht gesetzt? :nixweiss: Gemeinsamen CookieManager einbinden. :idea:

cu
Narses


jaenicke - Mo 26.07.10 19:48

Das dürfte bei einer DLL schwierig werden, da aufgrund des unterschiedlichen Speichermanagers das nicht so einfach geht.

Insofern ist es vermutlich am sinnvollsten einmal im Browser zu schauen was da eigentlich übertragen wird usw. (z.B. mit FireBug, HttpFox, ...) und dann gezielt diese Daten mit aus der DLL zu holen.


Blamaster - Mo 26.07.10 22:28

Genauer gesagt geht es um das laden eines Youtube Videos.

Die dll fordert den Link an liest die benötigten Daten aus dem Quellcode und baut daraus den Downloadlink zusammen.

Wenn ich den nun aus dem Programm kopiere und ihn bei Mozilla einfüge wird das Video auch direkt geladen. Wenn ich den Link jetzt allerdings vom Hauptprogramm mit indy lade, kommt der Zugriffsfehler.

Was für einen Referer hat man eigentlich bei den indys garkeinen oder ?

Mfg Blamaster


jaenicke - Mo 26.07.10 22:36

Du hast auch keinen Referrer, wenn du den Link im Browser direkt einfügst.

Du musst eben mal vergleichen was im Browser übertragen wird und bei dir nicht. :nixweiss:
Dafür gibt es neben den oben genannten Tools auch z.B. WireShark.
Verdächtige gibt es einige, sei es der UserAgent oder andere Daten.


Blamaster - Di 27.07.10 01:24

Ich habe ebend mal gesnifft. Folgendes kam dabei raus.

Link den mir das Plugin zusammensetzt worauf danach das Get der indy angewendet wird:


Delphi-Quelltext
1:
http://v9.lscache7.c.youtube.com/videoplayback?ip=89.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=900037&algorithm=throttle-factor&itag=5&ipbits=8&burst=40&sver=3&expire=1280210400&key=yt1&signature=71189EB2031AF583713BAAE33CE325AFA3E23B8C.1E22CFBB20CE84098DEC5550DD82358AEE61E3D7&factor=1.25&id=2e48e58c13532ece                    


Log von meinem Programm:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
GET /videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dXRVJMTl9FSkNNN19KRlJF&fexp=900064&algorithm=throttle-factor&itag=5&ipbits=0&burst=40&sver=3&expire=1280210400&key=yt1&signature=D183CC1DD8772587BA93A287B714DC978B85421F.61102AEC10F463FC0971E4D98932A1B1A6B199A4&factor=1.25&id=2e48e58c13532ece HTTP/1.1
Host: v9.lscache7.c.youtube.com
Accept: text/html, */*
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)
Authorization: Basic Og==

HTTP/1.1 403 Forbidden
Content-Type: text/plain
Connection: close
X-Content-Type-Options: nosniff
Date: Mon, 26 Jul 2010 23:14:31 GMT
Server: gvs 1.0


Und der Log wenn ich obigen Link direkt in den Browser einfüge:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
GET /videoplayback?ip=89.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=900064&algorithm=throttle-factor&itag=5&ipbits=8&burst=40&sver=3&expire=1280210400&key=yt1&signature=71189EB2031AF583713BAAE33CE325AFA3E23B8C.1E22CFBB20CE84098DEC5550DD82358AEE61E3D7&factor=1.25&id=2e48e58c13532ece HTTP/1.1
Host: v9.lscache7.c.youtube.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive

HTTP/1.1 200 OK
Last-Modified: Thu, 10 Jun 2010 13:32:51 GMT
Content-Type: video/x-flv
Content-Length: 5456366
Connection: close
Expires: Tue, 27 Jul 2010 05:55:00 GMT
Cache-Control: private,max-age=24009
X-Content-Type-Options: nosniff
Date: Mon, 26 Jul 2010 23:14:51 GMT
Server: gvs 1.0


Wodurch kann das zustande kommen ?

Mfg Blamaster


Edit.

Hat sich erledigt. Der Fehler lag bei mir habe ausversehen eine URL Decode Funktion zweimal auf den Link angewandt :oops:

Danke trotzdem für die Hilfe :)