Autor Beitrag
Kruger
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 06.08.14 08:13 
Hello community,

In advance, please excuse my lack of knowledge regarding the following topic, I have tried to familiarise myself with the topic using both google and the search function.

A friend of mine asked whether I could get data from a specific website for him, I answered "yes, I can try". I feel like I am pretty close and only need a final push. So let's go:

www.regelleistung.net -> this is the website in question

Menu item : Data for Control Reserve - in the following form he would normally specify what kind of data he is interested in and would then click the submit button .

Someone gave me the TAMPER information for the post request and I came up with the following code:

1. The request requires a jsession cookie which I retrieve + from TAMPER I saw that I require several other items of interest : __fp , _sourcePage and CSRFToken.
Because I do not know how to get those information without making an actual request - I just perform a testrequest and populate an array, which I will use for the actual request

ausblenden C#-Quelltext
1:
BASEURL = @"https://www.regelleistung.net/ip/action/abrufwert";					

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
        public string[] ReceiveCookiesAndHiddenData()
        {
            string[] tempHidden = new string[4];
            HttpWebRequest tempRequest = (HttpWebRequest)WebRequest.Create(BASEURL);
            
            using (HttpWebResponse tempResponse = (HttpWebResponse)tempRequest.GetResponse()) 
            {
                HtmlDocument doc = new HtmlDocument();
                doc.Load(tempResponse.GetResponseStream());
 
                tempHidden[0] = doc.DocumentNode.SelectNodes("//input[@type='hidden' and @name='_sourcePage']")[0].Attributes["Value"].Value;
                tempHidden[1] = doc.DocumentNode.SelectNodes("//input[@type='hidden' and @name='__fp']")[0].Attributes["Value"].Value;
                tempHidden[2] = doc.DocumentNode.SelectNodes("//input[@type='hidden' and @name='CSRFToken']")[0].Attributes["Value"].Value;
                tempHidden[3] = tempResponse.Headers["Set-Cookie"].Split(new Char[] { ';' })[0];
            }
            return tempHidden;
        }



2. Now I have to make the actual request. which requires the following information (according to Tamper):

http://pl.vc/3f5z0[^]


ausblenden volle Höhe C#-Quelltext
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:
        public void MakeActualRequest() 
        {
            hiddenData = ReceiveCookiesAndHiddenData();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(BASEURL);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            request.Referer = "https://www.regelleistung.net/ip/action/abrufwert";
            request.Headers.Add("Set-Cookie",hiddenData[3]);
 
            NameValueCollection outgoingQueryString = HttpUtility.ParseQueryString(String.Empty);
            outgoingQueryString.Add("von""05.08.2014");
            outgoingQueryString.Add("uenbld""STXs440zwks=");
            outgoingQueryString.Add("produkt""MRL");
            outgoingQueryString.Add("work""anzeigen");
            outgoingQueryString.Add("_sourcePage", hiddenData[0]);
            outgoingQueryString.Add("__fp", hiddenData[1]);
            outgoingQueryString.Add("CSRFToken", hiddenData[2]);
            string postdata = outgoingQueryString.ToString();
 
            byte[] data = Encoding.ASCII.GetBytes(postdata);
            request.ContentLength = data.Length;
 
            using(Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(data,0,data.Length);
            }
 
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
 
            using(StreamReader reader = new StreamReader(responseStream, Encoding.Default))
            {
                string content = reader.ReadToEnd();
            }
        }


I receive a WebException "Remote server error :(403)" in this line of code:

ausblenden C#-Quelltext
1:
HttpWebResponse response = (HttpWebResponse)request.GetResponse();					


I would be thankfull for help. I know this is like the 1000000 time such a question has been posted, but I read all those threads and still cannot figure it out.

Thank you all!

Moderiert von user profile iconTh69: C#-Tags hinzugefügt