网站登录以进行数据抓取

本文关键字:数据 抓取 登录 网站 | 更新日期: 2023-09-27 18:35:14

我正在尝试从我的各种远程发射器中抓取日期。我有一个品牌的发射器,我可以使用以下 c# 代码登录:

public static string getSourceCode(string url, string user, string pass)
{
    SecureString pw = new SecureString();
    foreach (char c in pass.ToCharArray()) pw.AppendChar(c);
    NetworkCredential credential = new NetworkCredential(user, pw, url);
    CredentialCache cache = new CredentialCache();
    cache.Add(new Uri(url), "Basic", credential);
    Uri realLink = new Uri(url);
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(realLink);
    req.Credentials = CredentialCache.DefaultNetworkCredentials;
    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
    StreamReader sr = new StreamReader(resp.GetResponseStream());
    string sourceCode = sr.ReadToEnd();
    sr.Close();
    resp.Close();
    return sourceCode;
}

第二品牌的发射器(我犹豫是否要公开网址)而不是返回请求用户名和密码的网页,返回一个请求用户名和密码的框。 使用上面的代码只会返回未经授权的错误。

Fiddler说,当我成功登录该网站时,将发送以下内容:

GET http(冒号斜杠斜杠)lasvegas3abn(*)dyndns(*)tv(PORT)125(斜杠)measurements(*)htm HTTP/1.1接受: text/html, application/xhtml+xml, */*接受语言:英文用户代理:Mozilla/5.0(兼容;微星 10.0;视窗NT 6.2;哇64;三叉戟/6.0;触摸)接受编码:gzip,放气主持人:lasvegas3abn.dyndns.tv:125授权:基本 dXNlcjpsaW5lYXI=连接:保持活动状态DNT: 1

有什么建议吗?

网站登录以进行数据抓取

而不是:

req.Credentials = CredentialCache.DefaultNetworkCredentials;

您可以指定使用特定用户名和密码的凭据:

req.Credentials = new NetworkCredential("username", "password");

这应该使您能够通过登录提示(假设您指定了正确的用户名和密码)。