爬虫技术要点(一)Post相关问题
2015-07-04 22:10
323 查看
本人有空有玩爬虫,虽然技术不行,没有拿得出手的作品,但还是喜欢玩,这几天就遇到一个非常奇怪的问题,无法理解的现象.
在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分钟.
在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分钟.
相关文章推荐
- 破解VI密码
- 2015年7月4日解决问题:eclipse连接access数据库问题//java五中布局及其应用方法//equals()与==的区别等
- 国务院:关于积极推进“互联网+”行动的指导意见
- 国务院:关于积极推进“互联网+”行动的指导意见
- 离开当当
- CSS z-index 属性的使用方法和层级树的概念
- TCP/IP-UDP
- 回头一望,继续向前
- Java中的浅拷贝与深拷贝
- UIColor
- koa学习笔记
- Android的帧动画补间动画,新手复习
- ecshop 调试分类页面技巧 debug_print_backtrace
- Sql语句之select 5种查询
- PHP 错误与异常 笔记与总结(14 )记录和发送异常信息
- Windows Live Writer Test
- A. Case of the Zeros and Ones
- 【LeetCode】214. Shortest Palindrome
- java 反射详解
- 判定一个点是否在三角形内