苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 3383|回复: 5

[HttpHelper] 数据post问题。

[复制链接]
发表于 2016-3-31 16:07:36 | 显示全部楼层 |阅读模式
最近在写一个网络爬虫程序。原网页在最后提交信息的时候,需要点击一个“继续”按钮,这个按钮是用div role=“button”实现的。用webbrowser找到该element以后使用常规的invokemember click模拟点击没有反应。

我用开发者工具抓包看到浏览器在这一步的时候有post数据。然后我就用httphelper模拟post了同样的数据过去。但是奇怪的是,浏览器返回的结果是正确的,而我post过去的数据返回就是错误的。我请求头已经修改成跟浏览器发送的请求头一致了。不知道为什么我这边post过去的反馈不正确。飞哥碰到过么?

PS.
这个按钮的网页源码是这样的:
<div role="button" tabindex="0" id="sc981" class="atv4 alc borderless sc-view sc-button-view continue-button button sc-huge-size def" style="margin-left: -40px; left: 50%; width: 80px; top: 0px; height: 27px" title=""><label id="sc1278-label" class="sc-button-label sc-huge-size ellipsis">继续</label></div>
我不知道这种按钮点击后到底触发了什么JS函数。。。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2016-3-31 18:11:43 | 显示全部楼层
你贴下抓到的包和你写的个代码,会不会是Cookie问题
 楼主| 发表于 2016-3-31 22:41:46 | 显示全部楼层
本帖最后由 zdking 于 2016-3-31 22:43 编辑
站长苏飞 发表于 2016-3-31 18:11
你贴下抓到的包和你写的个代码,会不会是Cookie问题

这个网站提交数据时,用开发工具抓包只能抓到一条post的数据。这是发包的数据:
{"deviceId":"1","captchaContext":{"id":"AX4LBPwRItLkR9YxXUlBpTeA6sd9QMBxQCtbKa2AAvXCDUwR2tLNkspIr7sIpyxeseztoMr920b4lSze6DNw0kEB4Hk14W2Eveb2qgnSHowgMv8jH9iCWve6Nu0YfiR5yoMFRYWA0MWdagWHcAWbY9A11I7xVs5ZUCLYBkYqFB6d0apYBOYFlst/B4JK7u++//GaVlbUoJuAvh14Crsin9WlfW0q/C+2C+E8ZM6ubgKdBpKiSYxNEkhEOIDvCipP8VMnCTorjqItXzfn+0h/nPgGjm+MgJdktitXRMTmUU0vCGIVwkWZpAoZMw0qDucERkXLFyVxEEYgfnPm4qC1oJzOrEpVsLnwN7j930ky/jVU5TmHoQe5dHl772C759DC6vwNeLXugcF1yoPxXcU3Hy9Jlp1sVmMjhfgbGCM72n0ji4C6vtT2JgGykkjmpSbgXRg/nRl0jjDz3ofQ93xe2fFXL+nxEDIAKX5dqsWgPTQUfHk4xDUPwnQH68DL2Q0HS2GQd6ryyQvgPbvys5gjxCZBVhu4+EX64mD5kan4UAM3Z5u92YsEqfpqo2SCTcBIGJQO4lpf21APFTFRtEC5vZgF9tLRq72ZGxsAv5lDzZXtnMgYN3zlJBsBTIX8Pk22AkyJCdQgEjh/ehMny1ofioMx9KHDlFjc2A45hInUL21xvfHvZ+JOH5dPpdygo/DKbEQxbhXNAP5c0D+7/UCMqK9dePFF7pufxtBuocmsuVpr4y67xLL7bwhNRjoRT16TW8DEwLAf8JjD5jdQdhivwqJ/PxO0/NQ0VYyG97GmR1O0aCeo7p25+eAixb48SGQjvcCVJnqnrio7cgGT+eDg8lAVyqarJBo/y3GUvjfmSB+k8M+OJdXCpNYi8TfncY1+1MJGc6XCrtoFjhQ71f+2f1VSjFY+ONDQwXeAVVRLE59h"},"captchaCode":"123123"}


string myPostData = "{\"deviceId\":\"" + IS+ "\",\"captchaContext\":{\"id\":\"" + captchaContextID + "\"},\"captchaCode\":\"" + myCaptcha + "\"}";
           
            item = new HttpItem()
            {
                URL = shttp,
                Accept = "*/*",//    可选项有默认值
                ContentType = "text/plain",
                Method = "post",
                UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36",
                ResultType = ResultType.String,//返回数据类型,是Byte还是Strin
            };

            //得到HTML代码
            result = http.GetHtml(item);
            if (result.StatusCode == System.Net.HttpStatusCode.OK)
            {
                //表示访问成功,具体的大家就参考HttpStatusCode类
            }


这个这网站用开发者工具看不到cookie,local storage 和session storage都没有数据。非常有意思。

我不太懂,会不会这个网站在post之前,在JS里做了什么,但是没有post数据?

他的登录过程是先获取一个验证码。然后post验证提交。整个过程很简洁,但是就是提交上去以后返回错误信息。不管我提交的验证码数据时正确还是错误,他都返回错误。


发表于 2016-4-1 09:55:07 | 显示全部楼层
myPostData 没看到有用吧,没有录入Post数据吧
 楼主| 发表于 2016-4-1 10:15:25 | 显示全部楼层
站长苏飞 发表于 2016-4-1 09:55
myPostData 没看到有用吧,没有录入Post数据吧

。。。。飞哥,我感觉我可以去死了。。。
发表于 2016-4-1 12:50:07 | 显示全部楼层
zdking 发表于 2016-4-1 10:15
。。。。飞哥,我感觉我可以去死了。。。

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2025-1-1 16:35

© 2014-2021

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