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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 27381|回复: 52

[求助] 关于京东post数据格式问题

[复制链接]
发表于 2014-2-11 13:08:10 | 显示全部楼层 |阅读模式
通过手机页面,模拟登陆请求,抓包发现,在post的时候是把表单数据发送给服务器,
form data
  • returnurl:

  • username:
    XXXXX
  • password:
    XXXXX
  • remember:
    true

  • Content-Type:
    application/x-www-form-urlencoded





请问这种格式的话,用HttpHelper该如何模拟?


一般不都是url+post数据那种格式么?




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2014-2-11 13:09:46 | 显示全部楼层
网上找了下相关提交表单的列子,发现他们都是Content-Type: multipart/form-data
而我这个却是Content-Type:application/x-www-form-urlencoded
发表于 2014-2-11 13:09:51 | 显示全部楼层
直接Post拼接字符串就行了吧。
 楼主| 发表于 2014-2-11 13:15:53 | 显示全部楼层
站长苏飞 发表于 2014-2-11 13:09
直接Post拼接字符串就行了吧。

那这个form data 要不要一起写进去呢?
 楼主| 发表于 2014-2-11 13:18:32 | 显示全部楼层
抓包信息:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:Shift_JIS,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ja,en-US;q=0.8,en;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:61
Content-Type:application/x-www-form-urlencoded
Cookie:JAMCookie=true; abtest=20140211093721516_00; mobilev=html5; rememberMe="MpjBJ/BbC+r5MWsB2DpHJP65WbfUZC/L"; logincheck=3BB77663393B06B3DFC5A322BCC6E31DE220E78060074D4E642253056E1F140AB5D67DB91C9339FD0B88EF2E4BE0E7C0A4DC50A50D510BF432419356EA9EB4BE2FB65EF6C59F3B7388FD842A4506DE0B9B43A89882068F7ABF71988B54229682A518843B1FA22158541A9532B12CFD00E095F77D006B6FEB4B211568698796F0; ver=1; __jda=122270672.2112341435.1392084714.1392084714.1392084714.1; __jdv=122270672|www.360buy.com|-|referral|-; __jdu=b34129de90ac853c075f449486c060e0; _jzqco=%7C%7C%7C%7C%7C1.1481462128.1392084714430.1392084714430.1392084714430.1392084714430.1392084714430.0.0.0.1.1; sid=5695988ac091e1581ed239c799641c37; JSESSIONID=3CA7FCF216C50838A383E5771F6C9393.s1; __utmmobile=0x9330802a45b815f0.1392082649769.1392088513625.1392093545033.4; __mjdv=direct|-|none|-; __mjdb=4
Host:passport.m.jd.com
Origin:https://passport.m.jd.com
Referer:https://passport.m.jd.com/user/d ... 1581ed239c799641c37
User-Agent:Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; MI-ONE C1 Build/IMM76D) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31
Query String Parametersview URL encoded
sid:5695988ac091e1581ed239c799641c37
Form Dataview URL encoded
returnurl:
username:XXXX
password:XXXX
remember:true
 楼主| 发表于 2014-2-11 13:20:14 | 显示全部楼层
直接拼接的话是下面这样?还是把:改成=呢
            string postdata = "returnurl:" + "&";
            postdata = postdata + "username:" + "XXXX&";
            postdata = postdata + "password:" + "XXXXX&";
            postdata = postdata + "remember:" + "true";
发表于 2014-2-11 13:28:53 | 显示全部楼层

你参考Post数据就行了,Post是怎么发送的你就怎么发送和他的格式一样就Ok
 楼主| 发表于 2014-2-11 14:01:56 | 显示全部楼层
我换了火狐浏览器,总算得到 数据格式了,和chrome不一样。
还有一个问题,火狐浏览器抓包得到的信息中,参数啊Referer啊之类的 都有encode,而chrome都没有的
那我传给服务器的时候要encode吗
发表于 2014-2-11 14:04:18 | 显示全部楼层
以抓到的包为准吧,测试 一下就知道了。估计那个加不加都行
 楼主| 发表于 2014-2-11 20:33:45 | 显示全部楼层
首先先谢谢飞哥的指导。
经过测试,确实登陆成功了,可发现了一个问题,就是我代码登陆以后得到的cooike和浏览器访问后抓包得到的cooike不一样,貌似少了些。
第一步:https://passport.m.jd.com/user/doLogin.action 这个就是登陆网址,我登陆成功了
但只有2个cooike  JAMCookie=true sid=a2a4d3cf868dc2fefc322ccebdf5657f
浏览器的话是下面这些。
Cookie:JAMCookie=true; abtest=20140211201829011_90; mobilev=html5; sid=a2a4d3cf868dc2fefc322ccebdf5657f; JSESSIONID=1564B0AFE1DB73FEBD0119B55877E543.s1; __utmmobile=0xbad5cd8cf27cd4e0.1392121109803.1392121109803.1392121109803.1; __mjdv=direct|-|none|-; __mjdb=2

这样还算正常吗,因为我后面下单的时候,出错了,而浏览器下单的话,这前面登陆的cooike貌似一直都有的,所以我在想是不是第一步虽然登陆成功了,但少了cookie,导致后面的出错了。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-6-1 15:39

© 2014-2021

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