http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4856|回复: 2

[其他] 通过HttpHelper 批量下载数据,出问题了

[复制链接]
发表于 2013-10-25 23:14:56 | 显示全部楼层 |阅读模式
网址:联-通-网址  http://uac.10010.com/portal/mallLogin.jsp实现目的:通过登录网站批量获取所有账户的通话记录。
实现步骤:
1. 通过浏览器跟踪得到验证地址

http://uac.10010.com/portal/Service/MallLogin?callback=jsonp1382685209388&userName=账户&password=密码&pwdType=01&productType=02&verifyCode=验证码&redirectType=MALLLOGIN&areaCode=390&redirectURL=&rememberMe=0&arrcity=%E5%8E%A6%E9%97%A8&iVersion=
2.进入首页
http://www.10010.com
(这里跨域跳转,可能跳转到这一步就Cookie已经出错了)
3.进入页面(所有商品分类——查话费——通话详单)
http://iservice.10010.com/ehallService/static/login/r?menuid=000100030001
(服务器进行跳转 http://iservice.10010.com/index_.html)
(跨域跳转,进行代码测试时发现得到的Cookie值是空,但是通过Chrome浏览器跟踪是有Cookie,不明白是哪里的问题造成的)
4.查询通话记录,并下载Execl

问题:
因为很少做过这个这种开发,不清楚问题是哪里出了问题,实在不行就用WebBrowser控件。
如果采用JS记录Cookie那估计就有问题,但是通过浏览器跟踪并没有这个情况,经验少。

代码片段
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Drawing;
  5. using System.IO;

  6. namespace Phone.Common
  7. {
  8.     /// <summary>
  9.     ///
  10.     /// </summary>
  11.     public class Unicom
  12.     {
  13.         HttpHelper http = new HttpHelper();//定义Http对象
  14.         private string cookie = "";
  15.         public string GetCookie
  16.         {
  17.             get { return cookie; }
  18.         }
  19.         public HttpItem GetItem()
  20.         {
  21.             HttpItem item = new HttpItem() {
  22.                 URL = "http://www.sufeinet.com",//URL     必需项
  23.                 Encoding = null,//编码格式(utf-8,gb2312,gbk)     可选项 默认类会自动识别
  24.                 //Encoding = Encoding.Default,
  25.                 Method = "get",//URL     可选项 默认为Get
  26.                 Timeout = 100000,//连接超时时间     可选项默认为100000
  27.                 ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000
  28.                 //IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写
  29.                 Cookie = cookie,//字符串Cookie     可选项
  30.                 UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统     可选项有默认值
  31.                 Accept = "text/html, application/xhtml+xml, */*",//    可选项有默认值
  32.                 ContentType = "text/html",//返回类型    可选项有默认值
  33.                 Referer = "http://www.10010.com/",//来源URL     可选项
  34.                 Allowautoredirect = true,//是否根据301跳转     可选项
  35.                 //CerPath = "d:\\123.cer",//证书绝对路径     可选项不需要证书时可以不写这个参数
  36.                 Connectionlimit = 1024,//最大连接数     可选项 默认为1024
  37.                 //Postdata = "C:\\PERKYSU_20121129150608_ScrubLog.txt",//Post数据     可选项GET时不需要写
  38.                 PostDataType = PostDataType.FilePath,//默认为传入String类型,也可以设置PostDataType.Byte传入Byte类型数据
  39.                 //ProxyIp = "192.168.1.105:8015",//代理服务器ID 端口可以直接加到后面以:分开就行了    可选项 不需要代理 时可以不设置这三个参数
  40.                 //ProxyPwd = "123456",//代理服务器密码     可选项
  41.                 //ProxyUserName = "administrator",//代理服务器账户名     可选项
  42.                 ResultType = ResultType.Byte,//返回数据类型,是Byte还是String
  43.                 //PostdataByte = System.Text.Encoding.Default.GetBytes("测试一下"),//如果PostDataType为Byte时要设置本属性的值
  44.                 CookieCollection = new System.Net.CookieCollection(),//可以直接传一个Cookie集合进来
  45.             };
  46.             return item;
  47.         }
  48.         /// <summary>
  49.         /// 获取验证码图片
  50.         /// </summary>
  51.         /// <returns></returns>
  52.         public Image GetVerifyImage()
  53.         {
  54.             HttpItem item = GetItem();
  55.             item.URL = "http://uac.10010.com/portal/Service/CreateImage";
  56.             HttpResult result = http.GetHtml(item);
  57.             cookie = result.Cookie;
  58.             using (MemoryStream ms = new MemoryStream(result.ResultByte))
  59.             {
  60.                 Image outputImg = Image.FromStream(ms);
  61.                 return outputImg;
  62.             }
  63.         }
  64.         /// <summary>
  65.         /// 登录网站信息
  66.         /// </summary>
  67.         /// <param name="name"></param>
  68.         /// <param name="pwd"></param>
  69.         /// <param name="verifyCode"></param>
  70.         /// <returns></returns>
  71.         public string Logo(string name, string pwd, string verifyCode)
  72.         {
  73.             string url = string.Format("http://uac.10010.com/portal/Service/MallLogin?callback=jsonp1382685209388&userName={0}&password={1}&pwdType=01&productType=02&verifyCode={2}&redirectType=MALLLOGIN&areaCode=390&redirectURL=&rememberMe=0&arrcity=%E5%8E%A6%E9%97%A8&iVersion=", name, pwd, verifyCode);
  74.             HttpItem item = GetItem();
  75.             item.URL = url;
  76.             item.Cookie = cookie;
  77.             HttpResult result = http.GetHtml(item);
  78.             cookie = result.Cookie;
  79.             return result.Html;
  80.         }
  81.         /// <summary>
  82.         /// 获取电话清单源代码
  83.         /// </summary>
  84.         /// <returns></returns>
  85.         public string TelephoneList()
  86.         {
  87.             string url = "http://iservice.10010.com/ehallService/static/login/r?menuid=000100030001";
  88.             HttpItem item = GetItem();
  89.             item.URL = url;
  90.             item.Cookie = cookie;
  91.             HttpResult result = http.GetHtml(item);
  92.             //程序运行并没有发生异常,这里的Cookie是空值
  93.             cookie = result.Cookie;
  94.             return result.Html;
  95.         }
  96.         public string SetUserSessionQ()
  97.         {
  98.             string url = "http://iservice.10010.com/ehallService/static/queryMonth/checkmapExtraParam/0001";
  99.             HttpItem item = GetItem();
  100.             item.Method = "post";
  101.             item.URL = url;
  102.             HttpResult result = http.GetHtml(item);
  103.             cookie = result.Cookie;
  104.             return result.Html;
  105.         }
  106.         /// <summary>
  107.         /// 设置日期Session
  108.         /// </summary>
  109.         /// <returns></returns>
  110.         public string SetUserSession()
  111.         {
  112.             string url = "http://iservice.10010.com/ehallService/static/queryMonth/execute2/YHgetMonths/QUERY_paramSession.processData/QUERY_paramSession_Data/000100030001/undefined/2013-10-23/2013-10-23/0?_=1382695343078&menuid=000100030001";
  113.             HttpItem item = GetItem();
  114.             item.Method = "post";
  115.             item.URL = url;
  116.             HttpResult result = http.GetHtml(item);
  117.             cookie = result.Cookie;
  118.             return result.Html;
  119.         }
  120.         /// <summary>
  121.         ///
  122.         /// </summary>
  123.         public void DomnExecl()
  124.         {
  125.             string url = "http://iservice.10010.com/ehallService/ToExcel.jsp?type=02&_=1382695345299";
  126.             HttpItem item = GetItem();
  127.             item.Cookie = "iservice=g6wpSqSc81QFTrn1n0pK4rN5Nx4ZTN0MZGVZ6PZQh1njcsnb6R1n!880843110!915873891;BIGipServerPOOL_W2PORTAL_APP=252646410.17183.0000; BIGipServerPOOL_W2PORTAL_WEB=286198282.20480.0000; mallcity=11|110; usst=13827017911071655; uvst=13827863911079608; HJ5107VISITSNID=0; piw=%7B%22login_name%22%3A%220592-31***76%22%2C%22nickName%22%3A%220592-31***76%22%2C%22rme%22%3Anull%2C%22verifyState%22%3A%22%22%7D; JUT=gH7fBwlrjvOE1rkAy8jVbS1qS3PSdCWl/4RTefnLZoqNaSu0pU4YY9+ZQRs8RbTrXBR1xCjVmeYr2lIRq79PUKpOZrk8UVwX4da0QgB3ThxOB8f35Tu+5nSmhP4wd7fIqz5fGfWyds4q5h3mv02L9yzTggIoUT2z6dh/CWM8PG8NiwGkTvkHNyjbJCYepFzcsL+dnP8SaobRLAcjmziinVF71JS6WM+kvCF+zexumrEEJEKHcC4hYbXQe+gwcRv8q99e9NPlmxkOS0YH/KAofma+OBGE0H+FbpqdAKrzcKiNEqCUEV1b1UoAg8GbSNMQ3TSPdEtqyh79pqJ1NvhdXREzILzJWlxRD49jLaWX21voOd1Zfg7a17JonnYRdXObYugeHEvdoz4n7WGK1MLYwKy3Ou98CyKylL/H9O7bbpvK0dtFtme0qKiIX40aDAkrypUByNZffAqylvvF+ud12lEDjdOErtJTRlBnJGNpLdgwFG2zBPrzasb7AL4EqSSwQ8MqwTZ40m46pmZUNzam7Q==; WT_FPC=id=22db68b473d40af46041382699991066:lv=1382700795166:ss=1382699991066; __utma=231252639.498526238.1382699991.1382699991.1382699991.1; __utmb=231252639.16.10.1382699991; __utmc=231252639; __utmz=231252639.1382699991.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmv=231252639.Beijing; _n3fa_cid=844adb49bc934b66f26416d938fe6bfa; _n3fa_lvt_a9e72dfe4a54a20c3d6e671b3bad01d9=1382700795; _n3fa_lpvt_a9e72dfe4a54a20c3d6e671b3bad01d9=1382700795; Hm_lvt_9208c8c641bfb0560ce7884c36938d9d=1382699992; Hm_lpvt_9208c8c641bfb0560ce7884c36938d9d=1382700795; HJ5107ONCEVISITID8a949ccd3f466469013f4664fe540001=0113951932336130.01832340145483613; MI=000100030001; MJ=WT/WT_MENU_001/038/390/032; MP=WT/WT_MENU_004/038/390/032; PROVINCECODE=038; USERNUM=3116576";
  128.             item.URL = url;
  129.             HttpResult result = http.GetHtml(item);
  130.             FileStream fs = new FileStream(@"D:\123.xls", FileMode.Create, FileAccess.Write);
  131.             fs.Write(result.ResultByte, 0, result.ResultByte.Length);
  132.             fs.Flush();
  133.             fs.Close();
  134.         }
  135.         public string GetUrlHtml(string url)
  136.         {
  137.             HttpItem item = GetItem();
  138.             item.URL = string.Format("http://uac.10010.com/portal/Service/MallLogin?callback=jsonp1382685209388&userName=3116576&password=789987&pwdType=01&productType=02&verifyCode={0}&redirectType=MALLLOGIN&areaCode=390&redirectURL=&rememberMe=0&arrcity=%E5%8E%A6%E9%97%A8&iVersion=", url);
  139.             HttpResult result = http.GetHtml(item);
  140.             return result.Html;
  141.         }
  142.         public Unicom()
  143.         {
  144.             
  145.         }
  146.         /// <summary>
  147.         /// 进入首页
  148.         /// </summary>
  149.         /// <returns></returns>
  150.         public string Index()
  151.         {
  152.             string url = "http://www.10010.com/";
  153.             HttpItem item = GetItem();
  154.             item.URL = url;
  155.             item.Cookie = cookie;
  156.             HttpResult result = http.GetHtml(item);
  157.             cookie = result.Cookie;
  158.             return result.Html;
  159.         }
  160.     }
  161. }
复制代码
我用VS2010写了测试代码
http://pan.baidu.com/s/1wyUqw





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-10-26 18:17:55 | 显示全部楼层
Cookie值是变化着的,看你的代码中怎么固定一部分了?
 楼主| 发表于 2013-10-28 11:25:00 | 显示全部楼层
cload 发表于 2013-10-26 18:17
Cookie值是变化着的,看你的代码中怎么固定一部分了?

本来是没有的
我当时为了验证里面的数据,才固定一些数据的,主要是网站里面用到一些Session,我没有找到对应的Session ID,所有出了问题
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-23 10:26

© 2014-2021

快速回复 返回顶部 返回列表