使用 http POST 登录谷歌
本文关键字:谷歌 登录 POST http 使用 | 更新日期: 2023-09-27 17:56:57
认为谷歌对用户有限制,所以用户必须登录才能下载文件,我想用http post登录谷歌这样的网站,然后下载一个文件。
如何使用http POST登录像谷歌这样的网站?
如果不提供有关此站点如何处理身份验证的更多详细信息,您的问题将无法回答。仅仅说像谷歌这样的网站是不够的。例如,Google提供了一个API来执行此操作。
现在让我们假设这个网站使用 cookie 来跟踪经过身份验证的用户。以下是所涉及的过程的概述。您可以使用 HttpWebRequest 的 CookieContainer 属性。因此,您将向允许通过发送用户名/密码进行身份验证的页面发送第一个请求。然后,cookie 容器将捕获身份验证 cookie,并将在后续请求下载文件时发送。
并用代码说明:
var container = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create("https://example.com/login");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.CookieContainer = container;
using (var stream = request.GetRequestStream())
using (var writer = new StreamWriter(stream))
{
var values = HttpUtility.ParseQueryString(string.Empty);
values["password"] = "secret";
values["username"] = "someuser";
writer.Write(values.ToString());
}
using (var response = request.GetResponse())
{
// At this stage if authentication went fine the
// cookie container should have the authentication cookie
// allowing to track the user
}
// Now let's send a second request to download the file
request = (HttpWebRequest)WebRequest.Create("https://example.com/authenticated_resource");
request.CookieContainer = container;
request.Method = "GET";
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
// TODO: do something with the response
}
我建议使用一些pop或imap组件来检索邮件。例如,打开 Pop .NET。
这称为屏幕抓取。 您必须发出HTTP请求,在要提交表单的情况下发布表单数据,然后解析响应。 我使用HtmlAgilityPack使这些任务更容易,但它不会为你做所有的事情......
看看这里:
http://crazorsharp.blogspot.com/2009/06/c-html-screen-scraping-part-1.htmlhttp://crazorsharp.blogspot.com/2009/06/c-html-screen-scraping-part-2.html