HttpWebRequest模拟 POST 登陆,并保持登陆状态,最好有详细代码

网址:
http://www.iwencai.com/stockpick/search?typed=1&preParams=&ts=1&f=3&qs=pc_%7Esoniu%7Estock%7Estock%7Ehistory%7Equery&selfsectsn=&querytype=&searchfilter=&tid=stockpick&w=%E6%A6%82%E5%BF%B5%E6%9D%BF%E5%9D%97%EF%BC%8C%E5%9F%8E%E5%B8%82

如何使用httpwebrequest登陆,并保持登陆状态(以便后续采集网页数据),请帮忙说一下分析过程,如对抓包结果怎么分析?模拟登陆时都要提交哪些信息,最好给出相应代码,谢谢。


/// <summary>
/// 结果数组
/// </summary>
public class StockResult { public System.Collections.Generic.List<object[]> result; }
public class Stock {
    /// <summary>
    /// 下载url html代码
    /// </summary>
    /// <param name="url"></param>
    /// <returns></returns>
    public static string GetHtml(string url)
    {
        string html = null;
        System.Net.WebClient wc = new System.Net.WebClient();
        try { html = wc.DownloadString(url); }
        catch { }
        wc.Dispose();
        return html;
    }
    /// <summary>
    /// 下载接口数据序列化为对象
    /// </summary>
    /// <param name="token">token</param>
    /// <param name="page">第几页</param>
    /// <returns></returns>
    private static StockResult LoadData(string token,string page)
    {
        //一次采集10条,要采集更多自己修改perpage=10的参数
        string url = "http://www.iwencai.com/stockpick/cache?token={0}&p={1}&perpage=10&changeperpage=1&showType=[%22%22,%22%22,%22onTable%22,%22onTable%22,%22onTable%22,%22onTable%22,%22onTable%22,%22onTable%22,%22onTable%22,%22onTable%22]";
        url = string.Format(url, token, page);
        string html = GetHtml(url);
        StockResult r = null;
        if (html != null)
        {
            //序列化为对象,用到了Newtonsoft.Json.Net20.dll
            //可以去http://www.w3dev.cn/download/20130218/Newtonsoft.Json.Net20.dll-download.aspx这里下载
            r = Newtonsoft.Json.JsonConvert.DeserializeObject<StockResult>(html);
        }
        return r;
    }
    /// <summary>
    /// 前后截取
    /// </summary>
    /// <param name="str">要截取的字符串</param>
    /// <param name="s">开始字符串</param>
    /// <param name="e">结束字符串</param>
    /// <returns></returns>
    protected static string GetSubstring(string str, string s, string e)
    {
        string r = null;
        int sIndex = str.IndexOf(s);
        if (sIndex != -1)
        {
            int len = s.Length, eIndex = str.IndexOf(e, sIndex + len);
            if (eIndex != -1) r = str.Substring(sIndex + len, eIndex - sIndex - len);
        }
        return r;
    }
    /// <summary>
    /// 获取token
    /// </summary>
    /// <returns></returns>
    private static string GetToken()
    {
        string url = "http://www.iwencai.com/stockpick/search?typed=1&preParams=&ts=1&f=3&qs=pc_%7Esoniu%7Estock%7Estock%7Ehistory%7Equery&selfsectsn=&querytype=&searchfilter=&tid=stockpick&w=%E6%A6%82%E5%BF%B5%E6%9D%BF%E5%9D%97%EF%BC%8C%E5%9F%8E%E5%B8%82";
        string r = GetHtml(url);

        if (r != null) r = GetSubstring(r, "token\":\"", "\"");
        return r;
    }

    /// <summary>
    /// 测试函数,获取3页数据输出
    /// </summary>
    public static void TestStockDemo()
    {
        string token = GetToken();
        if (token == null) HttpContext.Current.Response.Write("获取token失败!"); 
        else
        {
            for (int i = 1; i <= 3; i++)
            {
                StockResult r = LoadData(token, i.ToString());
                if (r == null||r.result==null) HttpContext.Current.Response.Write("下载第" + i.ToString() + "页数据失败!<hr>");
                else
                {
                    HttpContext.Current.Response.Write("第" + i.ToString() + "页数据<hr>");
                    foreach (object[] data in r.result)
                    {
                        foreach (object o in data) HttpContext.Current.Response.Write(o.ToString() + "|");
                        HttpContext.Current.Response.Write("<br>");
                    }
                }
            }
        }
    }
}

测试

     protected void Page_Load(object sender, EventArgs e)
    {
        Stock.TestStockDemo();
        }

输出
第1页数据603603.SH|博天环境|9.71|44.065|新股与次新股|海淀区|1|--|北京市|公用事业-环保工程-环保工程及服务|
002849.SZ|威星智能|17.40|44.040|新股与次新股|杭州市|1|--|浙江省|机械设备-电气设备-电气自控设备|
000507.SZ|珠海港|7.43|10.074|珠港澳物流合作园;一带一路;中巴经济走廊;横琴新区;PTA;新能源;珠海国资改革;粤港澳自贸区;珠海主题公园;地方国资改革;PTA涨价;参股新三板;珠三角区;广东自贸区|珠海市|14|5211970501.5|广东省|交通运输-港口航运-港口Ⅲ|
000548.SZ|湖南投资|10.30|10.043|好莱坞;交通示范区;长株潭;湖南国资改革;长江中游城市群;地方国资改革|长沙市|6|4672521790.56|湖南省|交通运输-公路铁路运输-高速公路Ⅲ|
300099.SZ|尤洛卡|13.38|10.033|煤矿安全;军工|泰安市|2|4345278561.92|山东省|机械设备-专用设备-冶金矿采化工设备|
002323.SZ|雅百特|17.99|10.031|一带一路;智能建筑;并购重组;光伏概念;建筑节能|盐城市|5|4273758382.5|江苏省|建筑材料-建筑装饰-专业工程|
300609.SZ|汇纳科技|14.15|10.031|新股与次新股|金山区|1|321500000|上海市|信息服务-计算机应用-软件开发及服务|
603615.SH|茶花股份|17.66|10.031|新股与次新股|福州市|1|963000000|福建省|化工-化工合成材料-其他塑料制品|
300123.SZ|太阳鸟|20.08|10.027|军民融合;高端装备;好莱坞;海洋经济;融资租赁;海洋执法;游艇;军工;元器件|益阳市|9|5002257803.5|湖南省|国防军工-国防军工-船舶制造|
300610.SZ|晨化股份|22.28|10.025|新股与次新股|扬州市|1|506250000|江苏省|化工-化学制品-其他化学制品|
第2页数据601890.SH|亚星锚链|9.22|10.024|南海;军工;海洋经济;船舶升级概念;沪港通概念;高端装备;航母;海工装备;村镇银行|泰州市|9|8039772000|江苏省|国防军工-国防军工-船舶制造|
300615.SZ|欣天科技|25.04|10.018|新股与次新股|深圳市|1|455200000|广东省|信息设备-通信设备-通信传输设备|
600184.SH|光电股份|25.70|10.017|军工改制;央企整合;航母;航天军工;引力波;军工;央企国资改革;光伏概念|襄阳市|8|9782252895.36|湖北省|国防军工-国防军工-地面兵装|
300612.SZ|宣亚国际|28.12|10.016|新股与次新股|朝阳区|1|460080000|北京市|信息服务-传媒-营销服务|
601882.SH|海天精工|26.81|10.012|新股与次新股|宁波市|1|1272114000|浙江省|机械设备-通用设备-机床工具|
603330.SH|上海天洋|38.35|10.012|新股与次新股|嘉定区|1|522900000|上海市|化工-化学制品-其他化学制品|
300605.SZ|恒锋信息|26.38|10.008|新股与次新股|福州市|1|503580000|福建省|信息服务-计算机应用-软件开发及服务|
603208.SH|江山欧派|57.60|10.008|新股与次新股|衢州市|1|1058195600|浙江省|轻工制造-家用轻工-家具|
300607.SZ|拓斯达|47.82|10.007|新股与次新股|东莞市|1|787676400|广东省|机械设备-通用设备-其它通用机械|
300608.SZ|思特奇|34.08|10.007|新股与次新股|海淀区|1|522167900|北京市|信息服务-计算机应用-软件开发及服务|
第3页数据603690.SH|至纯科技|16.71|10.007|新股与次新股|闵行区|1|789880000|上海市|机械设备-专用设备-其它专用机械|
002346.SZ|柘中股份|40.02|10.006|保障房|奉贤区|1|2903124000|上海市|机械设备-电气设备-输变电设备|
603637.SH|镇海股份|38.92|10.006|新股与次新股|宁波市|1|904889494|浙江省|建筑材料-建筑装饰-专业工程|
002846.SZ|英联股份|25.73|10.004|新股与次新股|汕头市|1|701700000|广东省|轻工制造-包装印刷-包装印刷Ⅲ|
002558.SZ|世纪游轮|70.27|10.003|游轮;中概股回归;网络游戏;虚拟现实;在线旅游|南岸区|5|4113648420|重庆市|信息服务-传媒-互联网信息服务|
300578.SZ|会畅通讯|43.88|10.003|新股与次新股|金山区|1|718020000|上海市|信息设备-通信设备-通信配套服务|
002839.SZ|张家港行|17.82|10.000|新股与次新股;村镇银行|苏州市|2|2928312000|江苏省|金融服务-银行-银行Ⅲ|
002848.SZ|高斯贝尔|13.31|10.000|新股与次新股|郴州市|1|505780000|湖南省|信息设备-通信设备-终端设备|
300597.SZ|吉大通信|30.25|10.000|新股与次新股|长春市|1|1650000000|吉林省|信息设备-通信设备-通信配套服务|
603626.SH|科森科技|48.07|10.000|新股与次新股|苏州市|3|2301534790|江苏省|机械设备-通用设备-金属制品|

http://www.cnblogs.com/ok519/p/3488091.html

http://blog.csdn.net/huwei2003/article/details/45556717

我自己顶一下,希望高手可以指导

还没弄好?你这个不需要登陆啊,获取token后修改接口参数就行了。。需要使用将返回的json字符串序列化为类实例方便操作。不过他中文内容进行了16进制编码,需要自己解码下,你采纳我的晚点帮你写一个demo :)