编辑:它倾向于HttpListener在这一点..它可能也必须通过套接字+ webclient或所有套接字您必须提出一个GET请求来检索请求头,这是关于所有...套接字也可以允许服务器将事物推送给客户端,而不需要请求,这不能通过webclient完成*如何自动确定登录和http请求所需的客户端请求?
我在做的是输入网址登录服务器:college campus,电子邮件,论坛,您每天需要的其他东西,并为他们创建一个工作登录。由于每个服务器可能会有所不同,请求类型会发生变化:(即)://castRequest.ServicePoint.Expect100Continue = false; //castRequest.ContentType = “application/x-www-form-urlencoded”;
如何从C#客户端发现这些必要的更改,而不是通过数据包和其他苛刻的方法手动工作?
在这里,我们去... - 确定你打开一个网站 - 没问题 - 你从HTML抓住一些登录标签,很容易的.. - 现在我在哪里:在您尝试登录 - 发送用户/密码不仅仅是这两件事的帖子 - 也不是仅仅进入页面 - 有http凭证,网络凭证和安全凭证+ USER/PW 凭证
html用户/ pw输入很容易解析出来:input type =“password”name =“pass回到问题--->如何连接并确定服务器需要的所有请求?
我将如何去分析和打开/关闭每个请求&我也将如何从网络抓取数据:“application/x-www-form-urlencoded”?我也发现,这并不总是返回相同的# cookies,我会通过某些浏览器或其他系统。为什么???
的代码段,这将是必要的://开始
通常这些网站已启用Cookie,让你用一个cookie启用Web客户端:
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;
}
}
}
+1。 Fiddler是查看请求的另一种选择。注意:由于OP试图以自己的身份登录,因此它应该总是可以进行常规Web身份验证(我同意像智能卡或双因素授权这样的东西是不可能的完全自动化)。 – 2013-03-10 05:34:22
你在各个层面都是错的,这是一个协议,使用它。我现在正在寻找HttpListener – ploxtic 2013-03-10 05:44:18
我明白你现在说的话。在这种情况下,您想要的是解释并运行JavaScript,Flash和/或其他决定发送回服务器的内容的东西。你最好使用一些在普通浏览器中填写表单的东西,比如greasemonkey。 – Jodes 2013-03-10 06:55:31