苏飞论坛广告位

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

HttpHelper万能框架(V2.3) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V1.9) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 346|回复: 7

[咨询站长] 最近用HttpHelper POST 一个网站登录进去,,并且开通商铺

[复制链接]

该用户从未签到

发表于 2018-8-30 18:47:05 | 显示全部楼层 |阅读模式
最近公司做一个winfrom程序用苏飞的HttpHelper类POST登录一个网站,进到后台,,然后POST开通商铺,,但是在登录到后台然后开通商铺的时候遇到问题,那个网站登录进去正常,然后POST 到店铺开通的页面的时候,会遇到另外一个页面然后进行跳转才能进去开通商铺的。然后我查看了,COOKIE的变化,,他的ASP.NET_SessionId 在跳转前跟跳转后完全不一样,可能该网站完全是两个站点,然后通过中间页面去验证,我看了苏飞的301.302的跳转,试了试也不行。我就是没办法拿到中间页面跳转后的COOKIE。要是拿到才能去开通商铺。。因为开通商铺的页面需要 ASP.NET_SessionId 。。。。。。附上站点中间页面的跳转代码:下面是我写的

测试代码:

HttpHelper http = new HttpHelper();

            //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {

                URL = "http://usercenter.21csp.com.cn/admin/action/default.ashx",//URL必需项   
                Method = "post",//URL     可选项 默认为Get   
                PostEncoding = Encoding.GetEncoding("gb2312"),
                ContentType = "application/x-www-form-urlencoded",//返回类型    可选项有默认值
                Postdata = "cmd=UserLogin&UserName=kpyujaho4444&UserPwd=2612295&CCode=",//Post要发送的数据
            };
            //请求的返回值对象  
            HttpResult result = http.GetHtml(item);

                    //获取请求的Cookie
            string cookie1 = result.Cookie;






            //创建Httphelper参数对象
            HttpItem item1 = new HttpItem()
            {
                URL = "http://b2b.21csp.com.cn/users/default.aspx",//URL     必需项   
                Method = "get",//URL     可选项 默认为Get   
                ContentType = "text/html",//返回类型    可选项有默认值   
                Allowautoredirect = false,//默认为False就是不根据重定向自动跳转
                    Cookie = cookie1
            };
            //请求的返回值对象
            HttpResult result1 = http.GetHtml(item1);
            //获取请求的Cookie
            string cookie = result1.Cookie;

            //获取302跳转URl
            string redirectUrl = "http://b2b.21csp.com.cn/users/Summary.aspx?_=1535619121484";


            item = new HttpItem()
           {
               URL = redirectUrl,//URL     必需项   
               Method = "get",//URL     可选项 默认为Get   
               ContentType = "text/html",//返回类型    可选项有默认值   
               Cookie = cookie
           };
            //请求的返回值对象
            result = http.GetHtml(item);
            //获取请请求的Html
            string html = result.Html;
            //获取请求的Cookie
            cookie = result.Cookie;

12222.png
  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 623 天

    [LV.9]以坛为家II

    发表于 2018-8-30 18:52:33 | 显示全部楼层

    该用户从未签到

     楼主| 发表于 2018-8-30 18:54:34 | 显示全部楼层
    想拿到开通店铺的COOKIE  但是在这个中间跳转的页面挡住了,如果直接请求POST店铺的页面还是给访问到这里。。。,我真是无奈啊,,有高手有什么好的解决方案不。。
    IYM6JCBS%[11]@M}ZMF3CQA.png

    该用户从未签到

     楼主| 发表于 2018-8-30 18:56:13 | 显示全部楼层
    sufeinet 发表于 2018-8-30 18:52
    能抓到跳转前后的包吗,做下对比应该就知道了吧

    能抓到,,但是跳转前后完全是两个站点,,COOKIE 的SEESONID 完全不一样,。。如果能拿到第二个就好了
  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 623 天

    [LV.9]以坛为家II

    发表于 2018-8-30 19:16:22 | 显示全部楼层

    该用户从未签到

     楼主| 发表于 2018-8-30 19:43:53 | 显示全部楼层
    sufeinet 发表于 2018-8-30 19:16
    跨站要修改Cookie的路径和域名,要不不生效

    A页面登陆完了,想POST 到 C页面,但是C页面需要ASP.NET_SessionId ,A页面登陆完的ASP.NET_SessionId 跟C页面的不一样,,A是通过登陆B页面跳转到C页面,最后生成的ASP.NET_SessionId,我现在想拿C页面的ASP.NET_SessionId,怎么拿?试过你那些例子的301.302跳转都拿不到最后这个ASP.NET_SessionId
  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 623 天

    [LV.9]以坛为家II

    发表于 2018-8-31 09:44:56 | 显示全部楼层
  • TA的每日心情
    开心
    2018-7-30 09:08
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2018-9-1 14:21:10 | 显示全部楼层
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

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

    GMT+8, 2018-11-22 18:35

    © 2017-2018

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