爬虫技术要点(一)Post相关问题

1 篇文章 0 订阅

本人有空有玩爬虫,虽然技术不行,没有拿得出手的作品,但还是喜欢玩,这几天就遇到一个非常奇怪的问题,无法理解的现象.


在Eclipse中运行程序,流程一帆风顺地走下去,但在命令行中(CMD)运行,使用 java class类的方式运行,且流程在form表单提交时,响应始终会超时,而且在两个网站中使用都这样,我就纳闷了,怎么每次我一输入验证码,怎么都登陆不进去呢?不会是服务器的问题.现在终于想解决了.


打开WireShark,看看这个提交用的Post协议到底发出去没有,答案当然是没有啦,至少在Http协议中找不到,那就看看Tcp协议吧,呃,有啊,怎么WireShark没有把它当作Http协议呢?肯定是协议出问题了,笑话,Eclipse和cmd运行用的都是同样的代码,怎么可能是协议出问题.


仔细比较这条Post协议的Http(Eclipse运行时获取)版和Tcp(cmd运行获取)版的数据,发现了这样的差别:

http版的结尾是\r\n\r\n,tcp版的结尾是要post的数据结尾,绕过了\r\n\r\n,本来该在\r\n\r\n这里截断的,为什么没有?

再往后来,post数据也不一样啊,同样的表单,为什么post数据不一样?

嘿嘿,因为中文编码的原因:

表单里有个input提交按钮项,value值是中文,Elipse运行我用的UTF-8编码,CMD中默认是GBK编码,所以cmd运行时这个数据发送的是乱码,可能这是这样把http协议打乱了.

其实这样表单项是用不上的,直接去掉后,欧啦!哈哈,不到10分钟.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值