前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#发送HTTP请求自动登录Web网站

C#发送HTTP请求自动登录Web网站

作者头像
卡尔曼和玻尔兹曼谁曼
发布2019-01-25 15:11:32
1.6K0
发布2019-01-25 15:11:32
举报

研究生期间不可少的一项任务——报账,今天8点准时点击财务取票系统(8点开放取票)结果取到了100号,每天财务(具体财务几科就不多说了)差不多就能处理30个左右的号吧!连续好几天了,报个帐我容易吗!哎,不说了,说多了都是泪。只想好好搞研究,争取顺利离开武大。好好加油吧!

下面说说实现的方法,首先发送HTTP请求登陆到系统,你得利用浏览器自带工具(火狐、IE、Chrome都行)查看表单提交的action给谁?Get或者Post请求,参数等等信息。然后得到服务器发你给的Cookie,再发送取票请求,发送的时候要注意带上你的Cookie,否则服务器会认为你没有登录。如果你有好多人密码和账户,则可以利用线程同时多人进行取票。

下面贴出代码,其中里面有些编码我是更加武大财务网站调整的,你要根据你的情况进行调整,否则返回的值会乱码。

(下面的例子中主要是HTTP Get和Post方法,我只用到了Post方法,因为我这边的网站提交都是以Post方法进行提交的)

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;

namespace WebNET
{
    class LoginWeb
    {
        static void Main(string[] args)
        {
            string loginUrl = "http://202.114.74.218/web3/login_gr.aspx";
            string loginData = "uid=******&pwd=******";
            CookieContainer cookies = new CookieContainer();
            string loginResult = LoginWeb.HttpPost(loginUrl, loginData, cookies);
            Console.WriteLine("这是登陆后的界面信息!");
            Console.WriteLine(loginResult);

            //预约明天的票
            string checkUrl =
                "http://202.114.74.218/web3/baobiao/Queue/QueueSystem.aspx";
            string checkData = "ImageButton2.x=167&ImageButton2.y=20&deptID=3&dateType=NextDday&timeType=AM";
            string checkResult = LoginWeb.HttpPost(checkUrl, checkData, cookies);
            Console.WriteLine("这是取票结果");
            Console.WriteLine(checkResult);
            Console.ReadKey();
        }

        /************************************************************************/
        /* Http Get请求
         * url为请求的网址
         * data为GET请求参数(格式为:key1=value1&key2=value2)
         */
        /************************************************************************/
        public static string HttpGet(string url, string data)
        {
            url = url + "?" + data;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "text/hmtl;charset=UTF-8";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(responseStream);
            string result = streamReader.ReadToEnd();
            streamReader.Close();
            responseStream.Close();
            return result;
        }

        /************************************************************************/
        /* Http Post 请求
         * url为请求的网址
         * data为POST请求参数(格式为:key1=value1&key2=value2)
         * cookie为存储Cookie的容器CookieContainer
         */
        /************************************************************************/
        public static string HttpPost(string url, string data, CookieContainer cookies)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            //FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型,默认的缺省值是“application/x-www-form-urlencoded”
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = Encoding.UTF8.GetByteCount(data);
            request.CookieContainer = cookies;
            Stream requetStream = request.GetRequestStream();
            StreamWriter streamWriter = new StreamWriter(requetStream);
            streamWriter.Write(data);
            streamWriter.Close();

            request.CookieContainer = cookies;

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            response.Cookies = cookies.GetCookies(response.ResponseUri);
            cookies.Add(response.Cookies);
            Stream responseStream = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding("GB2312"));
            string result = streamReader.ReadToEnd();
            streamReader.Close();
            responseStream.Close();
            return result;
        }
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年09月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档