喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
     
标题: [问题] 关于抓取EMS网站的问题。。  
 
zxishere
新手上路
Rank: 1



UID 85096
精华 0
积分 9
帖子 5
金钱 9 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-12-21
状态 离线
[广告]: q m
关于抓取EMS网站的问题。。

EMS的网站:
http://www.ems.com.cn/qcgzOutQueryAction.do?reqCode=gotoSearch

想模拟提交,取得返回的结果

用了snoopy和curl,貌似都米法。。
不知道是我方法不对还是什么

研究了下原理,应该是有一个session,然后有一个隐藏的 myEmsbarCode 貌似随机数的东西。。
贴上自己的snoopy代码。求高手解决

<?
include "Snoopy.class.php";
$snoopy = new Snoopy;
$submit_url = "http://www.ems.com.cn/qcgzOutQueryAction.do";
   
    $submit_vars["reqCode"] = "browseBASE";
    $submit_vars["myEmsbarCode"] = "1466260448764";
    $submit_vars["mailNum"] = "EI436138259JP";
        $snoopy->cookies["JSESSIONID"] = 'HZnX2dY2pLzYbGz3BVTBdzMBf3tVpvPgZrCJLSpJGzWG0v3rhTVt!240513717';
    $snoopy->submit($submit_url,$submit_vars);
    print $snoopy->results;
?>
2008-3-14 11:48 AM#1
查看资料  发短消息  顶部
 
songlv (超级版主)
论坛元老
Rank: 8Rank: 8


UID 73828
精华 0
积分 3021
帖子 693
金钱 3017 喜悦币
威望 0
人脉 4
阅读权限 90
注册 2006-5-22
状态 在线
[推荐阅读] 引用一段不太明白的CODE,希望大家来关照与探讨一下
帮你用CURL写了个,经测试可用

<?php
<?php 
set_time_limit
(0);
error_reporting(E_ALL);

$url    =    "http://www.ems.com.cn/qcgzOutQueryAction.do?reqCode=gotoSearch";
$url2    =    "http://www.ems.com.cn/qcgzOutQueryAction.do";
$mailNum=    "EI436138259JP";
$cookie_jardirname(__FILE__) ."/test.cookie";


echo 
emsQuery($url,$url2,$mailNum,$cookie_jar);


function  
emsQuery($url,$url2,$mailNum,$cookie_jar){
    
$ch curl_init();  
    
curl_setopt($chCURLOPT_URL$url); 
    
curl_setopt($chCURLOPT_COOKIEJAR$cookie_jar); 
    
curl_setopt($ch,CURLOPT_COOKIE,$cookie_jar);
    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
    
curl_setopt($chCURLOPT_HEADERfalse);
    
curl_setopt($chCURLOPT_NOBODYfalse);
    
curl_setopt($ch,CURLOPT_REFERER,$url); 
    
$content=curl_exec($ch); 
    
preg_match('/name="myEmsbarCode" value="(.*)"/i',$content,$myEmsbarCode);
    
curl_close($ch); 
    
$myEmsbarCode=$myEmsbarCode[1];


    
$ch2 curl_init();
    
curl_setopt($ch2CURLOPT_URL,$url2);
    
$post="reqCode=browseBASE&myEmsbarCode=$myEmsbarCode&mailNum=$mailNum";
    
curl_setopt($ch2CURLOPT_POST1);
    
curl_setopt($ch2CURLOPT_POSTFIELDS,$post);

    
curl_setopt($ch2,CURLOPT_REFERER,$url);
    
curl_setopt($ch2CURLOPT_HEADERfalse);
    
curl_setopt($ch2CURLOPT_RETURNTRANSFER1);
    
curl_setopt($ch2CURLOPT_COOKIEFILE$cookie_jar); 
    
$content2 curl_exec($ch2);
    
curl_close($ch2);
    
preg_match('/td class="txt-main" align="left">(.*)<form name="form1"/isU',$content2,$res);

    return 
$res[1];


}
?>
结果见附件

[php][/php]


 附件: 您所在的用户组无法下载或查看附件



不要跑  不要玩   不要看  不要  
2008-3-14 12:41 PM#2
查看资料  访问主页  Blog  发短消息  顶部
 
zxishere
新手上路
Rank: 1



UID 85096
精华 0
积分 9
帖子 5
金钱 9 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-12-21
状态 离线
[推荐阅读] 北京联智通信息技术有限公司招聘php程序员
好强好强。。。完全偶像。。
一半以上的代码看不懂。。
看来我还要抓紧学习了。。
谢谢  songlv 大大
2008-3-14 01:47 PM#3
查看资料  发短消息  顶部
 
songlv (超级版主)
论坛元老
Rank: 8Rank: 8


UID 73828
精华 0
积分 3021
帖子 693
金钱 3017 喜悦币
威望 0
人脉 4
阅读权限 90
注册 2006-5-22
状态 在线
[推荐阅读] 运行mail函数报错


QUOTE:
原帖由 zxishere 于 2008-3-14 01:47 PM 发表
好强好强。。。完全偶像。。
一半以上的代码看不懂。。
看来我还要抓紧学习了。。
谢谢  songlv 大大
不客气




不要跑  不要玩   不要看  不要  
2008-3-14 02:27 PM#4
查看资料  访问主页  Blog  发短消息  顶部
 
zhanyou
中级会员
Rank: 3Rank: 3
初级会员



UID 67338
精华 0
积分 278
帖子 511
金钱 278 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2005-12-20
状态 离线
[推荐阅读] 获得值
偶像淫....................



只有想不到的,没有做不到的!
2008-3-14 06:24 PM#5
查看资料  Blog  发短消息  顶部
 
songlv (超级版主)
论坛元老
Rank: 8Rank: 8


UID 73828
精华 0
积分 3021
帖子 693
金钱 3017 喜悦币
威望 0
人脉 4
阅读权限 90
注册 2006-5-22
状态 在线
[推荐阅读] PHP5常用问题解决方案
就是和正常访问一样,分两次访问,cookie得打开 ,用来存储sessionID的,要不服务器读不到随机码,第一次是获得表单页面中的随机码,第2次利用已经获得的随机码的值进行POST 同时提交cookie



不要跑  不要玩   不要看  不要  
2008-3-14 06:36 PM#6
查看资料  访问主页  Blog  发短消息  顶部
 
zxishere
新手上路
Rank: 1



UID 85096
精华 0
积分 9
帖子 5
金钱 9 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-12-21
状态 离线
[推荐阅读] MBA心情
诶。。我在进来讨论一下。今天和同事谈到这个模拟提交的问题。
因为说的session其实也是通过cookie来判断的,
那如果有一个图片验证码,假如说我能模拟它session对应的cookie的值,
这样不是就可以绕过验证码了。

按照我同事的说法,session就是个浏览器生存周期的cookie
如果可以模拟,比如1234对应的seesionID是ABCD
那我模拟出来session的这个cookie,然后直接把1234赋值到验证码的输入框,是不是就可以跳过图片验证码了。。

不过感觉肯定不会那么简单,肯定我哪里思考有问题。。汗。。
求版主大大解答
2008-3-14 11:48 PM#7
查看资料  发短消息  顶部
 
songlv (超级版主)
论坛元老
Rank: 8Rank: 8


UID 73828
精华 0
积分 3021
帖子 693
金钱 3017 喜悦币
威望 0
人脉 4
阅读权限 90
注册 2006-5-22
状态 在线
[推荐阅读] 超强PHP团队接活!


QUOTE:
原帖由 zxishere 于 2008-3-14 11:48 PM 发表
诶。。我在进来讨论一下。今天和同事谈到这个模拟提交的问题。
因为说的session其实也是通过cookie来判断的,
那如果有一个图片验证码,假如说我能模拟它session对应的cookie的值,
这样不是就可以绕过验证码了 ...
你太天真了。。。。  验证码的值是在服务器端,sessionID才在客户浏览器里,不识别图片就别想绕过




不要跑  不要玩   不要看  不要  
2008-3-15 11:46 AM#8
查看资料  访问主页  Blog  发短消息  顶部
 
zxishere
新手上路
Rank: 1



UID 85096
精华 0
积分 9
帖子 5
金钱 9 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-12-21
状态 离线
[推荐阅读] 很傻很天真
我转达我同事先。。
我自己已经被自己弄晕了。。。
2008-3-15 03:01 PM#9
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.028015 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP