使用程序自动登录网站

之前写过一篇使用代码自动登录网站,下载数据的博客程序自动登录和下载数据,后来在测试发现发现使用之前博客中的方法会导致网站系统异常,自然也就不能登录和下载数据了。但因为不是自己的网站不知道导致异常的原因,于是只能测试,后来发现是两个地方。1提交的数据中有特殊符号.2HttpWebRequest的Headers需要处理

  1提交的数据中有特殊符号.。例如+,=等

  都知道post方式提交数据时,会对一些特殊符号进行处理,例如=号,如果提交的数据中有"="如何处理呢

  例如post提交的数据时QH7GKc/+WrjdfHMyJKmiPw==,显然里边有特殊符号,如何处理呢,在客户端使用js函数encodeURIComponent

在csharp中使用Uri.EscapeDataString()使用这个方法

 ///将字符串转换为它的转义表示形式
        ///输入 +=/ 输出 %2B%3D%2F
        string EscapeDataString =  Uri.EscapeDataString("+=/");

csharp中几个常用的特殊字符处理方法

private void Test()
    {
        //将字符串转换为它的转义表示形式
        //输入 +=/ 输出 %2B%3D%2F
        string EscapeDataString = Uri.EscapeDataString("+=/");
        // 将字符串转换为它的非转义表示形式
        //输入 %2B%3D%2F 输出 +=/
        string UnEscapeDataString = Uri.UnescapeDataString(EscapeDataString);

        //对 URL 字符串进行编码
        //输入 http://blog.csdn.net/xuexiaodong009/article/details/74912461 
        //输出 http%3a%2f%2fblog.csdn.net%2fxuexiaodong009%2farticle%2fdetails%2f74912461
        string UrlEncode = HttpUtility.UrlEncode("http://blog.csdn.net/xuexiaodong009/article/details/74912461");
        //将已经为在 URL 中传输而编码的字符串转换为解码的字符串。
        //输入 http%3a%2f%2fblog.csdn.net%2fxuexiaodong009%2farticle%2fdetails%2f74912461 
        //输出 http://blog.csdn.net/xuexiaodong009/article/details/74912461
        string UnUrlEncode = HttpUtility.UrlDecode(UrlEncode);

        // 将字符串转换为 HTML 编码的字符串。
        // 输入<textarea id="URL" class="GuoLvWrapAgo" name="URL"></textarea>
        //输出 <textarea id="URL" class="GuoLvWrapAgo" name="URL"></textarea>
        string HtmlEncode = HttpUtility.HtmlEncode("<textarea id=\"URL\" class=\"GuoLvWrapAgo\" name=\"URL\"></textarea>");
        // 将已经为 HTTP 传输进行过 HTML 编码的字符串转换为已解码的字符串
       // 输入 <textarea id="URL" class="GuoLvWrapAgo" name="URL"></textarea>
        //输出 <textarea id="URL" class="GuoLvWrapAgo" name="URL"></textarea> 

        string UNHtmlEncode = HttpUtility.HtmlDecode(HtmlEncode);
}



2HttpWebRequest的Headers需要处理

   因为Headers中保存了一些特殊信息,例如编码。语言等。web网站获取客户端服务端信息

  如果没有设置,在服务端处理时就会导致异常

常用的heads

 HttpWebRequest request = null;      
        //HTTPSQ请求  
        if (url.Contains("https"))
        {
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
            request = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
        }
        else
        {
            request = (HttpWebRequest)WebRequest.Create(url);
        }
        request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
        request.Headers["Accept-Encoding"] = "gzip, deflate, br";
        request.Headers["Accept-Language"] = "zh-CN,zh;q=0.9,en;q=0.8";
        request.Headers["Cache-Control"] = "no-cache";
        request.KeepAlive = true;
        request.Host = "test.test.com:65188";
        request.Headers["Pragma"] = "no-cache";
        request.Referer = "http://test.test.com:65188/logout.html";
        request.Headers["X-Requested-With"] = "XMLHttpRequest";

        request.Headers["Upgrade-Insecure-Requests"] = "1";
        request.CookieContainer = InCookieContainer;
        request.ProtocolVersion = HttpVersion.Version10;

        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; LCTE; rv:11.0) like Gecko";    

设置Cookie

 //设置Cookie  为
            //  JSESSIONID=ssK4hDfQBhw57cTd7hgQsG11hLPzP15cS2TtLFqngVKLn1DJVyng!-2079575147
            //  PHPSESSID=ST-1366910325-SUoGiN9dd9k40chfOUCh-cas01exampleorg
             request.Headers["Cookie"] = cooks;





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值