Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Affje

Treue Seele

  • »Affje« ist der Autor dieses Themas

Beiträge: 89

Beruf: Student

  • Private Nachricht senden

1

14.08.2011, 12:12

[C#] WebClient Quellcode einer Webseite --> 403 Forbidden

Hallo,

ich habe folgendes Problem:
Ich möchte von einer Webseite den Quellcode herunterladen, um anhand von diesem dann eben weitere DInge auszulesen und zu verarbeiten. Bei den allermeisten Seiten klappt das per

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
            try
            {
                WebClient client = new WebClient();
                            
                String data = client.DownloadString(Browser.Url.ToString());

                StreamWriter writer = new StreamWriter(@"D:/data.txt");
                writer.Write(data);
                writer.Dispose();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


auch einwandfrei. Aber bei der Seite, die ich versuche herunterzuladen (wer-kennt-wen.de), gibt er mir eine 403-Permission Denied zurück.
Ich habe gelesen, dass es an den falschen Header liegen kann, also habe ich mir mit Fiddler eben alle möglichen Requests angeschaut, unter Mozilla sind diese Header gesetzt:

Quellcode

1
2
                client.Headers.Add("Accept", "*/*");
                client.Headers.Add("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0");


Habe ich was vergessen? Muss man bei "Login-Pages" anders vorgehen?
MfG

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

14.08.2011, 14:59

Hast du die Session-ID und den ganzen Kram aus den Cookies korrekt mit übergeben? Wenn nein, dann ist 403 eventuell absolut konform.

Übrigens solltest Du Dir auch mal die Methode File.WriteAllText ansehen...
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Affje

Treue Seele

  • »Affje« ist der Autor dieses Themas

Beiträge: 89

Beruf: Student

  • Private Nachricht senden

3

14.08.2011, 16:36

Ja, eigentlich schon.

Fiddler sagt folgendes:

Host: www.wer-kennt-wen.de
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0
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
Connection: keep-alive
Referer: http://www.wer-kennt-wen.de/people/friends
Cookie: __utma=171430438.1918195381.1313265037.1313317346.1313331625.8; __utmz=171430438.1313265037.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); s7a968ac17aa4e09a9aa4cbd18fc20me=1; POPUPCHECK=1313354201433; WKWSID=1138; WKWSESSID=246e722490ca4e915dc0dd328dd9d552; __utmb=171430438.2.10.1313331625; __utmc=171430438; __utmv=

HTTP/1.0 200 OK
Date: Sun, 14 Aug 2011 14:27:55 GMT
Server: Apache
P3P: CP="CAO OUR"
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
Connection: close
Content-Type: text/html


Mein ganzer Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;

namespace WKWChecker
{
    public partial class Main : Form
    {

        Uri friends = new Uri("http://www.wer-kennt-wen.de/people/friends");

        public Main()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Browser.Navigate("http://www.wer-kennt-wen.de");
        }

        private void buttonDownloadFriends_Click(object sender, EventArgs e)
        {
            try
            {
                WebClient client = new WebClient();

                client.Headers.Add("GET:", "/people/friends HTTP/1.1");
                client.Headers.Add("Host:", "www.wer-kennt-wen.de");
                client.Headers.Add("User-Agent:", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0");
                client.Headers.Add("Accept:", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
                client.Headers.Add("Accept-Language:", "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3");
                client.Headers.Add("Accept-Encoding:", "gzip, deflate");
                client.Headers.Add("Accept-Charset:", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
                client.Headers.Add("Connection:", "keep-alive");
                client.Headers.Add("Referer:", "http://www.wer-kennt-wen.de/people/friends");
                client.Headers.Add("Cookie:", "__utma=171430438.1918195381.1313265037.1313317346.1313331625.8; __utmz=171430438.1313265037.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); s7a968ac17aa4e09a9aa4cbd18fc20me=1; POPUPCHECK=1313354201433; WKWSID=1138; WKWSESSID=246e722490ca4e915dc0dd328dd9d552; __utmb=171430438.2.10.1313331625; __utmc=171430438; __utmv=");

                String data = client.DownloadString(Browser.Url.ToString());

                StreamWriter writer = new StreamWriter(@"D:/data.txt");
                writer.Write(data);
                writer.Dispose();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            this.Close();
        }

    }
}


Jetzt sagt er allerdings nicht mehr 403, d.h. die Header sollten einigermaßen passen, doch jetzt motzt er folgendes:

"Der angegebene Wert besitzt ungültige HTTP-Headerzeichen.
Parametername: name

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

14.08.2011, 20:20

Du übergibst doch hoffentlich nicht die Cookies statisch, oder? Ich hoffe mich da verlesen zu haben. Denn korrekter Weise macht man ja einen Login, liest und speichert die Cookies und übergibt sie dann korrekt wieder.

PS: Bist Du jetzt wieder Student?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Affje

Treue Seele

  • »Affje« ist der Autor dieses Themas

Beiträge: 89

Beruf: Student

  • Private Nachricht senden

5

14.08.2011, 21:18

Du übergibst doch hoffentlich nicht die Cookies statisch, oder? Ich hoffe mich da verlesen zu haben. Denn korrekter Weise macht man ja einen Login, liest und speichert die Cookies und übergibt sie dann korrekt wieder.

PS: Bist Du jetzt wieder Student?

Fail würd ich mal sagen, ich schau mir das dann morgen nochmal genauer an, wie ich die Cookies auslese etc.
Und wieso wieder Student? Ich bin seit Oktober 2010 Student und wüsste nicht, das mal geändert zu haben im Profil?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

14.08.2011, 21:21

Dann muss ich Dich wohl verwechselt haben. Aber ja, nach den Cookies solltest Du nochmal nachgucken. Und wenn möglich auch gleich einem korrekten Login. ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige