C# 屏幕抓取使用 POST 处理登录控件

发布于 2024-09-30 20:33:40 字数 1697 浏览 0 评论 0原文

我正在尝试使用屏幕抓取登录网站,但遇到困难。

 private static string GetWebRequestContent(Uri uri)
    {
        string sid = String.Empty;

        string userName = "username";
        string password = "password";
        string postData = string.Format("FormName=Login&Login={0}&Password={1}&FormAction=login&ret_page=%2FDefault.asp&querystring=",userName,password);
        byte[] postBytes = Encoding.UTF8.GetBytes(postData);


        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri);
        req.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C; .NET4.0E; MS-RTC LM 8)";
        req.KeepAlive = false;
        req.Proxy = new WebProxy(IPAddress,PORT);
        req.Method = "POST";
        req.Host = host;
        req.Referer = referer;
        req.ContentType = "application/x-www-form-urlencoded";
        req.ContentLength = postBytes.Length;

        StreamWriter requestwriter = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
        requestwriter.Write(postData);
        requestwriter.Close();

        try
        {
            using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
            {
                using (StreamReader sr = new StreamReader(res.GetResponseStream()))
                {
                    sid = sr.ReadToEnd().Trim();
                }
            }
        }
        catch (WebException e)
        {
            Console.WriteLine(uri.ToString());
            Console.WriteLine(e.Message);
        }

        return sid;
    }

我得到的只是登录表单,它从来没有让我登录。有什么想法吗?

I am trying to login to a website using screen scraping and I am having difficulties.

 private static string GetWebRequestContent(Uri uri)
    {
        string sid = String.Empty;

        string userName = "username";
        string password = "password";
        string postData = string.Format("FormName=Login&Login={0}&Password={1}&FormAction=login&ret_page=%2FDefault.asp&querystring=",userName,password);
        byte[] postBytes = Encoding.UTF8.GetBytes(postData);


        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri);
        req.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C; .NET4.0E; MS-RTC LM 8)";
        req.KeepAlive = false;
        req.Proxy = new WebProxy(IPAddress,PORT);
        req.Method = "POST";
        req.Host = host;
        req.Referer = referer;
        req.ContentType = "application/x-www-form-urlencoded";
        req.ContentLength = postBytes.Length;

        StreamWriter requestwriter = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
        requestwriter.Write(postData);
        requestwriter.Close();

        try
        {
            using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
            {
                using (StreamReader sr = new StreamReader(res.GetResponseStream()))
                {
                    sid = sr.ReadToEnd().Trim();
                }
            }
        }
        catch (WebException e)
        {
            Console.WriteLine(uri.ToString());
            Console.WriteLine(e.Message);
        }

        return sid;
    }

All that I get back is the login form, it is never logging me in. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

滴情不沾 2024-10-07 20:33:40

尝试监视浏览器中发送的请求,然后将其复制到脚本中。有各种 Firefox 扩展可以帮助您执行此操作,例如 TamperData< /a>、FirebugLiveHttp

Try monitoring what request is sent in your browser and then replicate this in your script. There are various firefox extensions that will help you do this, such as TamperData, Firebug, and LiveHttp.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文