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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 5080|回复: 4

[HttpHelper] 请教一个爬淘宝数据遇到的问题

[复制链接]
发表于 2015-10-19 12:00:16 | 显示全部楼层 |阅读模式
淘宝的网站,用同样的请求方式,同样的请求地址,同样的代码,没做任何改动。前天还可以正常请求到数据,今天请求的时候,返回的页面HTML就变成了淘宝的登录页了。跟了一下代码,发现请求某一个页面的时候,用代码请求的方式,返回的COOKIE和网页直接访问,返回的COOKIE,不一样。
ps:这个页面返回的cookie,是作为下一个网页的请求的COOKIE带过去的。(用抓包工具看到的)
我是一个新手,请问各位大神,是因为我请求的时候带的COOKIE的问题吗?
有没有相关经验的大神们。。。求赐教。。。





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-10-19 14:06:21 | 显示全部楼层
重新抓一下包看看,应该是cookie变了,这个Cookie应该是有有效时长的。
 楼主| 发表于 2015-10-19 14:44:30 | 显示全部楼层
苏飞大神,首先感谢你的回答。很荣幸。
在网页打开那个请求的网页的时候,用httpwatch看到的cookie,跟用您论坛里写的那个httphelper请求回来的returnCookie,是不一样的,是不是我请求的时候,方式不对呢?下面是请求的代码:
              
[C#] 纯文本查看 复制代码
  shopItem.URL = url;

                //客户端访问信息
                shopItem.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0";

                shopItem.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                //是否需要跳转页面,返回最终结果
                shopItem.Allowautoredirect = true;

                //最大连接数
                shopItem.Connectionlimit = 10;

                //请求返回类型
                shopItem.ContentType = "text/html";
                //返回数据的编码
                //shopItem.Encoding = Encoding.Default;
                shopItem.Encoding = callBackEncoding;

                shopItem.Expect100Continue = true;
                WebHeaderCollection headerCollection = new WebHeaderCollection();
                shopItem.Header = headerCollection;
                shopItem.KeepAlive = true;
                //shopItem.Host = "s.taobao.com";
                shopItem.Host = host;
                //请求方式
                shopItem.Method = "GET";
                //请求超时时间(毫秒)
                //shopItem.Timeout = 60000;
                shopItem.Timeout = timeOut;


                //请求到当前URL的来源地址
                //shopItem.Referer = "";
                shopItem.Referer = referer;
                //是否为全文小写
                shopItem.IsToLower = false;
                //跟随重定向的最大数目
                shopItem.MaximumAutomaticRedirections = 100;
                //获取或者设置请求的HTTP请求的版本,默认为11
                shopItem.ProtocolVersion = System.Net.HttpVersion.Version11;
                //返回数据类型:string类型时,result的HTML才会有值
                shopItem.ResultType = ResultType.String;

                #region 证书相关
                //证书路径
                shopItem.CerPath = cerFilePatch;
                //509证书集合
                shopItem.ClentCertificates = null;

                #endregion

                #region  代理服务器相关
                //设置代理对象
                //shopItem.WebProxy
                //代理服务器IP
                shopItem.ProxyIp = "";
                //代理服务器用户名
                shopItem.ProxyUserName = "";
                //代理服务器密码
                shopItem.ProxyPwd = "";
                #endregion

                #region  POST请求时相关
                //发送的字符串
                shopItem.Postdata = "";
                //数据Byte类型封装
                shopItem.PostdataByte = null;
                //数据类型
                shopItem.PostDataType = PostDataType.String;
                //写入POST数据超时时间
                shopItem.ReadWriteTimeout = 100;
                //POST请求的编码
                //shopItem.PostEncoding
                #endregion

                #region 未定义的参数
                //获取或者设置请求身份验证
                //shopItem.ICredentials
                //设置modifiedSince时间,默认为当前时间
                //shopItem.IfModifiedSince = DateTime.Now;
                //本地出口的IP地址和端口
                //shopItem.IPEndPoint

                #endregion

                #region cookies相关
                shopItem.Cookie = sendCookie;
                shopItem.CookieCollection = null;
                
                //cookie返回类型
                shopItem.ResultCookieType = ResultCookieType.String;
                #endregion

                msg.Code = 0;
                HttpResult resultInfo = this.GetHtml(shopItem);
                msg.Messages = resultInfo.Html;
                returnCookie = resultInfo.Cookie;
发表于 2015-10-19 15:36:21 | 显示全部楼层
完全 安抓包内容发送就 不会有问题,你可以抓取一下看看发送过去的有什么 不同,应该就知道少什么了。
 楼主| 发表于 2015-10-20 12:03:27 | 显示全部楼层
苏飞大神,我请求HTTPS的网站的时候,有按照论坛里的方法,把那个网站的证书,通过IE浏览器导出来,保存在本地,然后请求的时候,带过去。
问题是,还是会返回这个:请求被中止: 未能创建 SSL/TLS 安全通道。
是我哪一步做错了呢?
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-23 23:41

© 2014-2021

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