C# Instagram Post Request

11 Jun 2016
28
9
#1
Moin,

als Zeitvertreib wollte ich ein kleines Tool schreiben, welches automatisch Instagram Accounts erstellt. Mit Webbrowser und GetElementById alles gar kein Problem, allerdings wollte ich es sauberer mit Hilfe von Post Requests machen, jedoch blick ich bei den Webrequests noch nicht ganz durch.
Wie findet man z.B. heraus, welche Daten wichtig sind beim Post Request? (Cookies, Header, usw.)
Will kein spoon feeding oder source, nur kleine Denkanstösse damit ich es selber verstehe und nicht C&P muss.

Gruss,
.visual
 

Sephirot

Well-Known Member
2 Jun 2015
1,408
1,191
#2
Habe selbst noch nie mit POST Request innerhalb C# gearbeitet aber prinzipiell verschickst du eine Form bzw. Formular was mit Daten gespickt ist. Du müsstes dir den Quellcode der Seite anschauen bzw. dir die Form HTML Elemente anschauen: https://www.w3schools.com/html/html_forms.asp

Demnach sollte dir dann das hier helfen : https://stackoverflow.com/questions/4015324/how-to-make-http-post-web-request

Wegen Cookie, das sollte von der Webseite abhängig sein, ob der beim Request benötigt wird.

Edit: Falls ich irgendwas falsches gesagt habe, mich ruhig korrigieren. Hab mit Webentwicklung sehr wenig am Hut.
 
Likes: .visual
11 Apr 2016
159
107
#3
restsharp hilft weiter :smile: ziemlich hilfreiche library für sowas

um herauszufinden was für infos (header, cookies etc.) du mitsenden musst, damit der request valid ist, bleibt dir nichts anderes übrig, als den request aus dem browser aufzuzeichen und schauen, was mitgesendet werden muss
 
Likes: .visual

ZeCjy

Honorable
7 Jan 2015
3,543
2,503
#4
F12 und auf Network Tab gehen. Dann bei Chrome den Haken "Preserve Logs" aktivieren. Dann kannst du dir jede request angucke. Um die dann zu testen kann ich dir Postman empfehlen!
 
Likes: .visual

Logxn

Honorable
22 Jul 2016
1,355
1,383
#5
Hier ein Beispiel mit Hilfe von RestSharp aus meinem derzeitigen projekt

C#:
        /// <summary>    

        /// Checks if the given email address is already registered at Ada    

        /// </summary>    

        /// <param name="emailAddress">The email address to check</param>    

        /// <returns></returns>    

        private async Task<bool> emailExists(string emailAddress)    

        {    

            // var restAuthClient = new RestClient();
            restAuthClient.BaseUrl = new Uri(Constants.AUTH_BASE_URL);    

            var cancellationTokenSource = new CancellationTokenSource();    

            var request = new RestRequest(Constants.EMAIL_CHECK_ENDPOINT, Method.POST);

            request.RequestFormat = DataFormat.Json;

            request.AddBody(new { email = emailAddress });    

            IRestResponse<EmailInfo> restResponse = await restAuthClient.ExecuteTaskAsync<EmailInfo>(request, cancellationTokenSource.Token);    
            if (!restResponse.Data.exists)    

                return false;    

   

            return true;    
         }
glaube aber nicht dass account creation gehen wird aufgrund von OAuth und du deren Access Token header wahrscheinlich nicht reversen kannst
 
Likes: .visual

ZeCjy

Honorable
7 Jan 2015
3,543
2,503
#7
Falls noch jemand mal was braucht:

GET Request an 'instagram.com'
->aus den Cookies den 'csrftoken' speichern


POST Request mit Content-Type 'application/x-www-form-urlencoded' an 'instagram.com/accounts/web_create_ajax/ '

Headers
User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36' (hauptsache valide)
x-csrftoken: cookie value aus csrftoken

Body
email: [email protected]
password: passwd123
username: cloudkeypw
first_name: Jens

successful response:
JSON:
{
    "account_created": true,
    "user_id": "9265597118",
    "status": "ok"
}
Cookies die weiterhin wichtig sind:
mid, csrftoken, (mcd)(?), sessionid