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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 5216|回复: 2

[求助] 请教飞哥大神

[复制链接]
发表于 2015-10-14 18:53:24 | 显示全部楼层 |阅读模式
GET /HK/zh_HK/reserve/iPhone?execution=e1s2 HTTP/1.1
Host: reserve-hk.apple.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36
Referer: https://signin.apple.com/IDMSWebAuth/signin?path=%2FHK%2Fzh_HK%2Freserve%2FiPhone%3Fexecution%3De1s1%26p_left%3DAAAAAASUOoTTL%252BjA1TkaLSLAczgv7S%252BfQoCJt8YGc3jFrmdUbg%253D%253D%26_eventId%3Dnext&p_time=1444785897&rv=3&language=HK-ZH&p_left=AAAAAASUOoTTL%2BjA1TkaLSLAczgv7S%2BfQoCJt8YGc3jFrmdUbg%3D%3D&appIdKey=db0114b11bdc2a139e5adff448a1d7325febef288258f0dc131d6ee9afe63df3
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8

请问这个的包头和普通的有什么区别 为什么用浏览器就可以反问 httphelp就出错



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-10-15 08:32:51 | 显示全部楼层
HTTP/1.1协议版本不同,使用框架选择一下版本就行了http://tool.sufeinet.com/HttpHelper.aspx
 楼主| 发表于 2015-10-18 12:31:06 | 显示全部楼层

站长大神求救,

本帖最后由 wujiandao9 于 2015-10-18 12:33 编辑

站长你好 能帮我看下 为什么到了G的一步怎么都解决不了,由于网站限制晚上7点前可以正常测试的,请指教谢谢!

//放在类中
private CookieCollection cookies = new CookieCollection();  
        private string getPathUrl(string url)
        {
            string a = url.Split('?')[1];
            return a.Substring(0, a.IndexOf("&p_time"));
        }
        private string getResponeString(string url, string method = "GET",string Referer="",string postData="",bool allowautoredirect=false,bool getHTML=false,string accept="",string contentType="" )
        {
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = url,//URL     必需项  
                Method = method,//URL     可选项 默认为Get  
                Accept =string.IsNullOrEmpty(accept)? "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8":accept,//    可选项有默认值  
                ContentType =string.IsNullOrEmpty(contentType)?"application/x-www-form-urlencoded":contentType,//返回类型    可选项有默认值  
                ResultType = ResultType.String,//返回数据类型,是Byte还是String  
                ResultCookieType= ResultCookieType.CookieCollection,
                Referer=Referer,
                CookieCollection=cookies,
                Allowautoredirect = allowautoredirect,
                Postdata=postData
            };
            string value = "";
            try
            {
               HttpResult result = http.GetHtml(item);
               if (getHTML == false)
               {
                   value= result.Header[System.Net.HttpResponseHeader.Location];
                   cookies.Add(result.CookieCollection);
                   return value;
               }
               value = result.Html;
               cookies.Add(result.CookieCollection);
               return value;
        }
        catch
        {
            return value;
        }
        }

        private void start()
        {
            string url = "https://reserve-hk.apple.com/HK/zh_HK/reserve/iPhone?partNumber=MKUG2ZP/A&channel=1&returnURL=http://www.apple.com/hk/shop/buy-iphone/iphone6s&sourceID=&iPP=N&appleCare=N&carrier=&store=R428";//从此URL开始访问
            string signinUrl = "";
            string postUrl = "https://signin.apple.com/appleauth/auth/signin";
            string accept = "application/json, text/javascript, */*; q=0.01";
            string contentType = "application/json; charset=UTF-8";
            string Postdata = "{\"accountName\":\"cqqiphone@163.com\",\"password\":\"Aa137144\",\"rememberMe\":false}";
            string method = "POST";
            bool allowautoredirect = true;

            //A.第一步访问url链接获取Location URL;
            url = getResponeString(url);

            //B.通过A获取的URL继续访问获取Location URL
            url = getResponeString(url);
            signinUrl = url;

            //C.通过B获取的signinUrl继续访问 获取HTML
            string html = getResponeString(signinUrl, getHTML: true);

            //D.登录 通过指定的POST URL提交账号密码、需跳转、JSON数据提交格式 获取HTML
            html = getResponeString(url: postUrl, getHTML: true, method: method, postData: Postdata, accept: accept, contentType: contentType, allowautoredirect: allowautoredirect);

            //E.登录后进一步POST 需要从signinUrl提取相关参数组成Postdata 获取Location URL
            Postdata = "rememberMe=false&oAuthToken=&" + signinUrl.Substring(signinUrl.IndexOf("appIdKey=")) + "&language=&" + getPathUrl(signinUrl) + "&rv=3";//根据浏览器抓包创建POST数据
            postUrl = "https://signin.apple.com/IDMSWebAuth/signin";
            url = getResponeString(postUrl, method: method, Referer: signinUrl, postData: Postdata);

            //F.通过E返回的Location URL 继续访问继续获取Location URL
            url = getResponeString(url, Referer: signinUrl);

            //G.本次问题所在苏飞大神帮忙解决 到这一部就不能获取到详细信息了
            //我试过很多办法换COOKIE为字符串,修改accept、contentType、UserAgent都不行
            //allowautoredirect也都试过还有//就算能获取到HTML信息也是跳转后的登录页面的HTMLStatusDescription为跳转
            //正常不应该跳转的,浏览器抓包显示登录成功这个页面获取的HTML title是APPLE 而不是登录。
            //所以这里完全就卡主了,到底出了什么问题 希望大神帮忙下,是你的Httphelper让我从新提起了兴趣!谢谢
            url = getResponeString(url, Referer: signinUrl);
        }
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-12-22 19:36

© 2014-2021

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