httpclient post 方法 returns StatusCode:403,ReasonPhrase:'Forbidden'
httpclient post method returns StatusCode: 403, ReasonPhrase: 'Forbidden'
我正在尝试使用 c# httpclient 以编程方式从网站获取数据,但我无法获取数据。
我在下面提供了 link
https://ngodarpan.gov.in/index.php/home/statewise_ngo/5972/33/1
将以 table 格式显示数据列表,如果您单击 link 中的任何一个,将会弹出一个包含完整详细信息集的弹出窗口,这是我需要的以编程方式为每条记录获取它。
我每次都尝试通过点击下面的 link 来生成 csrf_token
https://ngodarpan.gov.in/index.php/ajaxcontroller/get_csrf
并尝试将 csrf 令牌和 ID 传递给以下 link
https://ngodarpan.gov.in/index.php/ajaxcontroller/show_ngo_info
但这会引发错误 403 forbidden。
private void sample1()
{
string str =
"https://ngodarpan.gov.in/index.php/ajaxcontroller/show_ngo_info";
var client = new HttpClient();
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("id", "169486"),
new KeyValuePair<string, string>("csrf_cookie_name",
"decab99c17a84a9040a03c362317289c")
};
var content = new FormUrlEncodedContent(pairs);
var response = client.PostAsync(str, content).Result;
}
{StatusCode:403,ReasonPhrase:'Forbidden',版本:1.1,内容:System.Net.Http.StreamContent,Headers:
{
日期:2019 年 6 月 9 日,星期日 07:01:09 GMT
Set-Cookie: csrf_cookie_name=2e39ed6c9bb142836d81233ba1a94732; expires=2019 年 6 月 9 日,星期日 07:01:11 GMT; Max-Age=2;路径=/; httponly
服务器:Apache/2.4.6
服务器:(红帽企业 Linux)
服务器:OpenSSL/1.0.1e-fips
服务器:mod_fcgid/2.3.9
服务器:PHP/5.6.30
服务器:mod_wsgi/3.4
服务器:Python/2.7.5
X-Powered-By: PHP/5.6.30
Content-Length: 1131
Content-Type: text/html;字符集=UTF-8
}}
当您获得 csrf_token
时,您应该将其值设置为两个值。 请求正文中的csrf_test_name
和cookies中的csrf_cookie_name
。您可以在浏览器中查看网络选项卡详细信息以获取更多详细信息。
private async Task sample1()
{
var url = "https://ngodarpan.gov.in";
var uri = new Uri(url);
string str = $"{url}/index.php/ajaxcontroller/show_ngo_info";
var csrf_token = "80c719c60ac281c34f2f7720fbd28be9";
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = new CookieContainer();
handler.CookieContainer.Add(uri, new Cookie("csrf_cookie_name",csrf_token)); // Adding a Cookie
var client = new HttpClient(handler);
client.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest");
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("id", "169486"),
new KeyValuePair<string, string>("csrf_test_name", csrf_token)
};
var content = new FormUrlEncodedContent(pairs);
var response = await client.PostAsync(str, content);
using (FileStream fS = File.Create("result.json"))
{
await response.Content.CopyToAsync(fS);
}
Console.WriteLine(response);
}
我正在尝试使用 c# httpclient 以编程方式从网站获取数据,但我无法获取数据。 我在下面提供了 link https://ngodarpan.gov.in/index.php/home/statewise_ngo/5972/33/1
将以 table 格式显示数据列表,如果您单击 link 中的任何一个,将会弹出一个包含完整详细信息集的弹出窗口,这是我需要的以编程方式为每条记录获取它。
我每次都尝试通过点击下面的 link 来生成 csrf_token https://ngodarpan.gov.in/index.php/ajaxcontroller/get_csrf
并尝试将 csrf 令牌和 ID 传递给以下 link https://ngodarpan.gov.in/index.php/ajaxcontroller/show_ngo_info
但这会引发错误 403 forbidden。
private void sample1()
{
string str =
"https://ngodarpan.gov.in/index.php/ajaxcontroller/show_ngo_info";
var client = new HttpClient();
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("id", "169486"),
new KeyValuePair<string, string>("csrf_cookie_name",
"decab99c17a84a9040a03c362317289c")
};
var content = new FormUrlEncodedContent(pairs);
var response = client.PostAsync(str, content).Result;
}
{StatusCode:403,ReasonPhrase:'Forbidden',版本:1.1,内容:System.Net.Http.StreamContent,Headers: { 日期:2019 年 6 月 9 日,星期日 07:01:09 GMT Set-Cookie: csrf_cookie_name=2e39ed6c9bb142836d81233ba1a94732; expires=2019 年 6 月 9 日,星期日 07:01:11 GMT; Max-Age=2;路径=/; httponly 服务器:Apache/2.4.6 服务器:(红帽企业 Linux) 服务器:OpenSSL/1.0.1e-fips 服务器:mod_fcgid/2.3.9 服务器:PHP/5.6.30 服务器:mod_wsgi/3.4 服务器:Python/2.7.5 X-Powered-By: PHP/5.6.30 Content-Length: 1131 Content-Type: text/html;字符集=UTF-8 }}
当您获得 csrf_token
时,您应该将其值设置为两个值。 请求正文中的csrf_test_name
和cookies中的csrf_cookie_name
。您可以在浏览器中查看网络选项卡详细信息以获取更多详细信息。
private async Task sample1()
{
var url = "https://ngodarpan.gov.in";
var uri = new Uri(url);
string str = $"{url}/index.php/ajaxcontroller/show_ngo_info";
var csrf_token = "80c719c60ac281c34f2f7720fbd28be9";
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = new CookieContainer();
handler.CookieContainer.Add(uri, new Cookie("csrf_cookie_name",csrf_token)); // Adding a Cookie
var client = new HttpClient(handler);
client.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest");
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("id", "169486"),
new KeyValuePair<string, string>("csrf_test_name", csrf_token)
};
var content = new FormUrlEncodedContent(pairs);
var response = await client.PostAsync(str, content);
using (FileStream fS = File.Create("result.json"))
{
await response.Content.CopyToAsync(fS);
}
Console.WriteLine(response);
}