Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何自动确定登录和http请求所需的客户端请求?_C#_Http_Httpwebrequest_Client Server_Httprequest - Fatal编程技术网

C# 如何自动确定登录和http请求所需的客户端请求?

C# 如何自动确定登录和http请求所需的客户端请求?,c#,http,httpwebrequest,client-server,httprequest,C#,Http,Httpwebrequest,Client Server,Httprequest,编辑:此时它倾向于HttpListener。。它可能还必须通过Sockets+webclient或所有Sockets完成。您必须发出GET请求才能检索请求头,这就是所有。。。套接字还允许服务器在不需要请求的情况下将内容推送到客户端,这是通过WebClient无法完成的* 我想做的是输入一个网址到一个网站登录服务器:大学校园,电子邮件,论坛,其他你每天需要的东西,并为他们创建一个工作登录。由于每台服务器可能有所不同,请求类型也会发生变化:ie://castRequest.ServicePoint.

编辑:此时它倾向于HttpListener。。它可能还必须通过Sockets+webclient或所有Sockets完成。您必须发出GET请求才能检索请求头,这就是所有。。。套接字还允许服务器在不需要请求的情况下将内容推送到客户端,这是通过WebClient无法完成的*

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

如何从C客户机中找到这些必要的更改,而不是手动通过数据包和其他苛刻的方法

我们走吧。。。 -好的,你打开一个网站 -没问题 -你可以从html中抓取一些登录标签,非常简单。。 -现在我的位置是:您尝试登录的位置 -发送一个用户/pw不仅仅是这两件事的帖子 -有时也不只是浏览网页 -有http凭据、网络凭据和安全凭据+用户/PW 证书

html用户/pw输入很容易解析出来:输入类型=密码名称=密码id=密码大小=15值=>,回到-->如何连接和确定服务器需要的所有请求的问题

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

将被删除的代码段necessary://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;
            }
         }
     }

我会结合使用Firefox插件Greasemonkey和Firebug。您无法真正以编程方式确定服务器的期望值。它们是人类写的,每个人都会用创造力解决问题。您必须手动为每个服务器分别建立服务器期望的内容。即使那样,这也不容易,或者在某些情况下,我想,甚至是可能的。您尝试登录的服务器可能会对不同的客户端做出不同的反应,原因很多,人们只能猜测。这就是为什么你会遇到cookies的问题。您不需要费力地查看数据包,但需要手动查看发送和接收的请求、这些请求的内容以及数据的含义。要获得进一步的帮助,您需要逐一查看每一个问题并提出具体问题。

此时看起来像是HttpListener。。它可能还必须通过Sockets+webclient或all Sockets完成。您必须发出GET请求以检索请求头,这就是所有。。。套接字还允许服务器在不需要请求的情况下将内容推送到客户端,这是通过WebClient无法完成的*


这是HTTP协议,如果没有客户端/服务器握手,互联网将无法工作。除地址外,您无需预先提供其他信息。服务器的工作是为您服务,而不是反过来。

+1。Fiddler是查看请求的另一个选项。。。旁注:由于OP尝试以自己的身份登录,因此常规的web身份验证应该始终是可能的。我也同意,智能卡或双因素授权之类的东西不可能完全自动化。您在所有级别上都有点错误,这是一个协议,请使用它。我正在研究HttpListener,现在我明白你在说什么了。在这种情况下,您需要的是能够解释和运行javascript、flash和/或其他决定返回服务器的内容的东西。你最好使用一些只在普通浏览器中填写表单的东西,比如greasemonkey。