免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6704 | 回复: 13
打印 上一主题 下一主题

如何才能获取指定网页,use LWP::UserAgent; use HTTP::Cookies; [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-29 16:15 |只看该作者 |倒序浏览
各位,大家好。有一网页,由于工作需要经常打开查询,所以用perl编写自动获取。
遇到以下问题无法解决,请哪位帮忙看看是哪里的问题?
大概情况:
使用了以下模块:
use LWP::UserAgent;
use HTTP::Cookies;

首先用post登陆系统,可以获取登陆后的框架页面,但是目标页面时,就无法成功500。
用wireshark捕获到的数据,显示代码都按计划的发送和获取了数据。

发现以下问题:用代码自动获取的JSSIONID不成功,如果把正常浏览器下得到的JSSIONID代替,就可以成功200 ok。但是重启后代码又无效了。
Cookie: kiwayid=9a5f05e97b17e412c6b75e082263a9fe; JSESSIONID=eayeox9fn2wKgJBB9I(wKgJBB9I); browserid=i480993; browserid=i485341; JSESSIONID=8tjttrd9q2wKgJBx9I(wKgJBx9I); kiwayid=8cc44ab7959c3c2b4d0ffb07e7fe4698(蓝色为代码获取的,红色为复制浏览器的)。

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2014-07-29 17:12 |只看该作者
设置一下 UserAgent 看看呢 ?

论坛徽章:
0
3 [报告]
发表于 2014-07-29 17:29 |只看该作者
UserAgent改为跟浏览器的一样也不行。
UserAgent:
$ua->agent('Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1');

必须在post($url,
[
       ....各个提交项。
],
    添加上:        'Cookie'=>'kiwayid=9a5f05e97b17e412c6b75e082263a9fe; JSESSIONID=eayeox9fn2wKgJBB9I(wKgJBB9I); browserid=i480993',
);
蓝色为浏览器上得到的cookies。

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
4 [报告]
发表于 2014-07-29 18:03 |只看该作者
用你get回来的不行?

论坛徽章:
0
5 [报告]
发表于 2014-07-29 18:06 |只看该作者
因为要提交数据,所以用post.
也试过了用get,同样不行啊。

论坛徽章:
0
6 [报告]
发表于 2014-07-29 18:14 |只看该作者
我是想知道,为什么用浏览器的cookie就可以获取页面,用代码自已经得到的cookies就不行?

lwp提交的数据跟HTTPWATCH捕获到的数据是完全一样的。

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
7 [报告]
发表于 2014-07-29 21:04 |只看该作者
本帖最后由 stanley_tam 于 2014-07-29 21:05 编辑

这样行不行{:3_193:}
  1. #!perl
  2. use strict;
  3. use warnings;
  4. use LWP;
  5. use LWP::ConnCache;
  6. use HTTP::Cookies;

  7. my $browser = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 );
  8. $browser->timeout(30);
  9. $browser->conn_cache(LWP::ConnCache->new());
  10. $browser->cookie_jar(HTTP::Cookies->new());

  11. my $login_form = {
  12.   user => 'user',
  13.   pass => 'pass',
  14. };

  15. # login
  16. $browser->post('http://server/login/', $login_form);

  17. # get target page
  18. my $resp = $browser->get('http://server/target_page/');

  19. # do somthing useful

  20. __END__
复制代码

论坛徽章:
0
8 [报告]
发表于 2014-07-30 12:52 |只看该作者
还是返回500,估计Cookie要符合什么条件才行,还没有找到原因。

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
9 [报告]
发表于 2014-07-30 12:56 |只看该作者
我觉得楼主的顺序有问题.

一般的情况下, 应该是先 get 一个 login form, 然后, 才会是 post login 请求. 你上来直接就 post请求, 怕是根本没有生成 session.

论坛徽章:
0
10 [报告]
发表于 2014-07-30 13:45 |只看该作者
我的流程是这样的:
get http://xxx/login.js (目的是生成cookie:browserid; JSESSIONID; kiwayid)200
            |
get http://xxx/ip.js (目的是取得登陆需要的本地外网IP)200
            |
post http://xxx/loginSuccess.js (登陆系统,200){cookiet自动更改}
    |
            |            正确获取登陆后的信息
            |
get http://xxx/target.js  500
            
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP