我用的是HttpClient.class.php这个类,模拟 Http 1.0抓取EMS快递信息,代码在本地测试完全可行,但上传到服务器后出现了问题,我先描述一下我抓取的过程:
1、POST到http://www.ems.com.cn/qcgzOutQueryNewAction.do,得到COOKIE等信息
2、发送COOKIE,并请求验证码图片(正常情况下,如果在Header中设置了正确的COOKIE值,这一步是不会再产生新的COOKIE的)
3、输入验证码,再次POST到http://www.ems.com.cn/qcgzOutQueryNewAction.do得到正确结果代码在本地测试没问题,但上传到服务器却在第2步出现了问题,在第二步,有时会产生新的COOKIE,而有时又不会。我开始以为是HTTP协议版本不对,又换了另完全能模拟HTTP 1.1的类进行测试,还是不行。请问这是怎么回事呢?是Header中缺少了什么信息吗?谢谢各位

解决方案 »

  1.   

    应该是先访问 http://www.ems.com.cn/servlet/ImageCaptchaServlet 这个取图片,
    此时有cookie了,再连同cookie,表单,验证码,一起POST提交过去,
    你第一步,和第二步,都有请求验证码,不就是刷新验证码了?
      

  2.   


    第一步的POST只是请求了qcgzOutQueryNewAction.do并得到COOKIE,但还没有请求验证码文件,所以不存在两次请求验证码。我这过程基本上跟浏览器是一样的方式。还没有弄明白是怎么回事,呵呵继续求助
      

  3.   

    抓包不会用啊,谁能帮帮忙给抓包看看么?地址:http://kuaidiwo.duapp.com/ems.php
    官方的地址是:www.ems.com.cn  http://www.ems.com.cn/qcgzOutQueryNewAction.do
    谢谢各位了啊。