发新话题
打印

想使用HttpWebRequest自动登录网站,总是遭遇403访问禁止问题

想使用HttpWebRequest自动登录网站,总是遭遇403访问禁止问题

ServicePointManager.MaxServicePoints = 4;
ServicePointManager.MaxServicePointIdleTime = 1000;
Uri MS = new Uri("http://www.szjs.com.cn/");
ServicePoint servicePoint = ServicePointManager.FindServicePoint(MS);
int hashCode=servicePoint.GetHashCode();

try
{
System.Net.HttpWebRequest request=(HttpWebRequest) WebRequest.Create(new Uri("http://www.szjs.com.cn"));
hashCode=request.ServicePoint.GetHashCode();

HttpWebResponse response=(HttpWebResponse)request.GetResponse();

request=(HttpWebRequest) WebRequest.Create(new Uri("http://www.szjs.com.cn/login.asp"));
hashCode=request.ServicePoint.GetHashCode();
request.UserAgent = "Mozilla/4.0";
request.AllowAutoRedirect = true;
request.ContentType="application/x-www-form-urlencoded";
request.Method="post";

string postData="userid=Kzhyjy&pass=3328287&usersort=unit";
ASCIIEncoding encoding=new ASCIIEncoding();
byte[] byte1=encoding.GetBytes(postData);
request.ContentLength=postData.Length;

Stream newStream=request.GetRequestStream();//运行到这一句便出现访问禁止异常,不过有时候又可以过去。

newStream.Write(byte1,0,byte1.Length);
newStream.Close();

response=(HttpWebResponse)request.GetResponse();//同样到这里也出现一样的情况。
System.IO.Stream resstream=response.GetResponseStream();
Byte[] recvBytes=new Byte[response.ContentLength];
resstream.Read(recvBytes,0,(int)response.ContentLength);
string s=System.Text.Encoding.Default.GetString(recvBytes);
string ss=s;
}
catch(WebException Err)
{
string ss=Err.Message+";"+Err.Status;
WebHeaderCollection headers=((HttpWebResponse)Err.Response).Headers;
for(int i=0;i<headers.Count;i++)
{
string[] sss=headers.GetValues(i);
for(int j=0;j<sss.Length;j++)
{
string ssss=sss[j];
}
}
}

遇到类似问题的前辈们盼望能不惜指点一二,怎么解决这个问题,还是想其他办法?

TOP

用浏览器访问,抓些包看看请求都发送些什么东西,然后把这些都写进去

TOP

需要下载iehttpHeaders v1.6软件模拟浏览器登陆整个过程。
我估计是你提交的参数中string postData="userid=Kzhyjy&pass=3328287&usersort=unit";少了button的坐标值。

TOP

参考:

HTTP 错误403|403错误
错误代码:403.1 403.1错误是由于"执行"访问被禁止而造成的,若试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会出现此种错误。

错误代码:403.2 403.2错误是由于"读取"访问被禁止而造成的。导致此错误是由于没有可用的默认网页并且没有对目录启用目录浏览,或者要显示的 HTML 网页所驻留的目录仅标记为"可执行"或"脚本"权限。

错误代码:403.3 403.3错误是由于"写入"访问被禁止而造成的,当试图将文件上载到目录或在目录中修改文件,但该目录不允许"写"访问时就会出现此种错误。

错误代码:403.4 403.4错误是由于要求SSL而造成的,您必须在要查看的网页的地址中使用"https"。

错误代码:403.5 403.5错误是由于要求使用 128 位加密算法的 Web 浏览器而造成的,如果您的浏览器不支持128位加密算法就会出现这个错误,您可以连接微软网站进行浏览器升级。

错误代码:403.6 403.6错误是由于IP 地址被拒绝而造成的。如果服务器中有不能访问该站点的 IP 地址列表,并且您使用的 IP 地址在该列表中时您就会返回这条错误信息。

错误代码:403.7 403.7错误是因为要求客户证书,当需要访问的资源要求浏览器拥有服务器能够识别的安全套接字层 (SSL) 客户证书时会返回此种错误。

错误代码:403.8 403.8错误是由于禁止站点访问而造成的,若服务器中有不能访问该站点的 DNS 名称列表,而您使用的 DNS 名称在列表中时就会返回此种信息。请注意区别403.6与403.8错误。

错误代码:403.9 403.9错误是由于连接的用户过多而造成的,由于Web 服务器很忙,因通讯量过多而无法处理请求时便会返回这条错误。

错误代码:403.10 403.10错误是由于无效配置而导致的错误,当您试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会返回这条错误。

错误代码:403.11 403.11错误是由于密码更改而导致无权查看页面。

错误代码:403.12 403.12错误是由于映射器拒绝访问而造成的。若要查看的网页要求使用有效的客户证书,而您的客户证书映射没有权限访问该 Web 站点时就会返回映射器拒绝访问的错误。

错误代码:403.13 403.13错误是由于需要查看的网页要求使用有效的客户证书而使用的客户证书已经被吊销,或者无法确定证书是否已吊销造成的。

错误代码:403.15 403.15错误是由于客户访问许可过多而造成的,当服务器超出其客户访问许可限制时会返回此条错误。

错误代码:403.16 403.16错误是由于客户证书不可信或者无效而造成的。

错误代码:403.17 403.17错误是由于客户证书已经到期或者尚未生效而造成的。

TOP

发新话题