-3

编辑:此时它倾向于 HttpListener .. 它可能还必须通过 Sockets + webclient 或所有套接字完成 您必须发出 GET 请求以检索请求标头,仅此而已......套接字也可以允许服务器无需请求即可将内容推送给客户端,而这无法通过 webclients 完成*

我要做的是输入网站登录服务器的 url:大学校园、电子邮件、论坛、其他你每天需要的东西,并为他们创建一个工作登录。由于每个服务器可能不同,请求类型会发生变化:(即)://castRequest.ServicePoint.Expect100Continue = false; //castRequest.ContentType = "application/x-www-form-urlencoded" ;

如何从 C# 客户端找到这些必要的更改,而不是手动处理数据包和其他苛刻的方法?

我们开始... - 好的,你打开一个站点 - 没问题 - 你从 html 中获取一些登录标签,很容易.. - 现在我在哪里:你尝试登录的地方 - 发送用户/密码不是'不仅仅是这两件事的帖子——有时也不只是进入页面——还有 http 凭证、网络凭证和安全凭证 + USER/PW 凭证

html 用户/密码输入很容易解析出来:输入 type="password" name="password" id="password" size="15" value="">,回到 ---> how你会连接并确定服务器想要的所有请求吗?

我将如何分析和打开/关闭每个请求的这些请求以及如何从网络中获取数据:“application/x-www-form-urlencoded”?我还发现这并不总是返回与我通过某些浏览器或其他系统获得的相同#的 cookie。为什么???

必要的代码片段://BEGIN

通常这些网站都启用了 cookie,因此您使用启用了 cookie 的 WebClient:

namespace watcher
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
//throw in a function create a cookie container:
void startRequest(){
        CookieContainer cookieJar = new CookieContainer();
        HTTP http = new HTTP(cookieJar);
}
        public class HTTP : WebClient
        {
            public HTTP()
            : this(new CookieContainer())
            { }

            public HTTP(CookieContainer c)
            {
                CookieContainer = c;
            }
        public CookieContainer CookieContainer { get; set; }

        protected override WebRequest GetWebRequest(Uri address)
        {
            WebRequest request = base.GetWebRequest(address);

            var castRequest = request as HttpWebRequest;
            if (castRequest != null)
            {
                castRequest.CookieContainer = CookieContainer;
                //castRequest.ServicePoint.Expect100Continue = false;
                //castRequest.ContentType = "application/x-www-form-urlencoded";
            }
                return request;
            }
         }
     }
4

2 回答 2

2

我会使用 Firefox 附加组件 Greasemonkey 和 Firebug 的组合。您无法真正以编程方式确定服务器的期望。它们是由人类编写的,每个人都会使用创造力解决问题。您将必须手动为每个单独建立服务器期望的内容。即便如此,这也不是一件容易的事,(或者在某些情况下,我想,甚至是可能的。)您尝试登录的服务器可能对不同的客户端做出不同的反应,出于各种原因,人们只能猜测。(这就是您遇到 cookie 问题的原因)。您不需要处理数据包,但您确实需要手动查看正在发送和接收的请求、这些请求的内容以及数据的含义。为了获得进一步的帮助,你'

于 2013-03-10T05:12:21.077 回答
0

它看起来像 HttpListener 在这一点上。它可能还必须通过 Sockets + webclient 或所有套接字来完成*您必须发出 GET 请求来检索请求标头,仅此而已......套接字还可以允许服务器无需请求即可将内容推送给客户端,而这无法通过 webclients 完成*

它是 HTTP 协议,如果没有客户端/服务器握手,互联网将无法正常工作。除了地址之外,您不需要预先提供信息。服务器的工作是为您工作,而不是相反。

于 2013-03-10T05:58:31.277 回答