苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 5745|回复: 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


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 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 完全不一样,。。如果能拿到第二个就好了
发表于 2018-8-30 19:16:22 | 显示全部楼层
跨站要修改Cookie的路径和域名,要不不生效
 楼主| 发表于 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
发表于 2018-8-31 09:44:56 | 显示全部楼层
跨站要修改Cookie的路径和域名,需要修改带过去的Cookie路径
发表于 2018-9-1 14:21:10 | 显示全部楼层
找B页面的事,都是他搞的事
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-12-26 03:10

© 2014-2021

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