尝试使用HttpClient在c#中登录instagram
我正在尝试使用httpclient库登录instagram。我可以获得和发布请求,但每次我收到403禁止状态。 最初,我请求获取csrfmiddlewaretoken唯一令牌,instagram使用该令牌进行跨站点请求伪造,代码如下尝试使用HttpClient在c#中登录instagram,c#,.net,windows-phone-8,instagram,dotnet-httpclient,C#,.net,Windows Phone 8,Instagram,Dotnet Httpclient,我正在尝试使用httpclient库登录instagram。我可以获得和发布请求,但每次我收到403禁止状态。 最初,我请求获取csrfmiddlewaretoken唯一令牌,instagram使用该令牌进行跨站点请求伪造,代码如下 HttpClient httpClient = new HttpClient(); string CSRFtoken = ""; try { CookieContainer cookies =
HttpClient httpClient = new HttpClient();
string CSRFtoken = "";
try
{
CookieContainer cookies = new CookieContainer();
cookies.Add(new Uri("https://instagram.com"), new Cookie("csrfmiddlewaretoken", CSRFtoken));
string pagedata = await httpClient.GetStringAsync(loginURL);
string pattern = @"csrfmiddlewaretoken""\svalue=""(.+)""";
var r = new System.Text.RegularExpressions.Regex(pattern);
var m = r.Match(pagedata);
CSRFtoken = m.Groups[1].Value;
}catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
之后,我通过发送csfrtoken、用户名和密码来发出post请求
借
var postData=newlist();
添加(新的KeyValuePair(“csrfmiddlewaretoken”,CSRFtoken));
添加(新的KeyValuePair(“用户名”、“abcdefg”);
添加(新的KeyValuePair(“密码”,“1234567”);
HttpClient=新的HttpClient();
尝试
{
HttpResponseMessage response=wait client.PostAsync(loginURL,新表单urlencodedcontent(postData));
response.EnsureSuccessStatusCode();
var responseString=await response.Content.ReadAsStringAsync();
MessageBox.Show(responseString);
}捕获(例外情况除外)
{
MessageBox.Show(例如Message);
}
我已经在这里和msdn网站上阅读了答案,但没有得到任何工作结果。
也尝试过此解决方案您尝试过InstaSharp吗?就我而言,这是一个很棒的库。我知道Instasharp wrapper,但它没有任何登录功能。
var postData = new List<KeyValuePair<string, string>>();
postData.Add(new KeyValuePair<string, string>("csrfmiddlewaretoken", CSRFtoken));
postData.Add(new KeyValuePair<string, string>("username", "abcdefg"));
postData.Add(new KeyValuePair<string, string>("password", "1234567"));
HttpClient client = new HttpClient();
try
{
HttpResponseMessage response = await client.PostAsync(loginURL, new FormUrlEncodedContent(postData));
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
MessageBox.Show(responseString);
}catch (Exception ex)
{
MessageBox.Show(ex.Message);
}