免费注册 查看新帖 |

Chinaunix

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

接下来该怎么办? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-23 09:30 |显示全部楼层 |倒序浏览
把论坛上的那本 Perl语言入门(第四版).pdf 大概的过了一遍 在此感谢大大狗,
正则看的不是很明白,后面的进程管理那些 高级perl技术 perl模块等等 没太看
只能说是 懂了些基本的语法了  能做些课后习题了

那接下来该做什么呢 直接上programming perl?
还是说找些小东西 自己写的试试?

比如说 我喜欢看小说,连载中,我就要时不时的登陆网站看更新了没有,我很想用perl写个自动检测的东西
如果更新了就提示我,然后我就去看,或者说 vip更新了 就去检测D帖更新了没有(当然不要骂我看D贴)

但我不清楚怎么实现他。可能会用到LWP模块,但我不知道具体怎么用。
我想请问下各位,当初你们学PERL的时候遇到和这样差不多的问题的时候是怎么解决的?

cpan有很多模块 但我不知道哪个是我需要的,也不知道怎么用。所以想问问各位

论坛徽章:
0
2 [报告]
发表于 2007-04-23 09:31 |显示全部楼层
中间还有个登陆的问题 登陆以后才能查看自己的书架。 这个我也不清楚怎么处理

论坛徽章:
0
3 [报告]
发表于 2007-04-23 13:34 |显示全部楼层
大家难道就是看完了一本书以后 就一下子精通了PERL 中间没个过程的吗?

论坛徽章:
0
4 [报告]
发表于 2007-04-23 15:45 |显示全部楼层
动手确实上最好的办法
可问题是我都不知道该怎么动手啊 比如说我可能会用到哪些模块 分别有什么作用
一点都不知道 我就知道有个LWP模块 可以帮住我get 某个页面的 html代码
可 怎么实现登陆  是一点方向也没有

论坛徽章:
0
5 [报告]
发表于 2007-04-24 10:33 |显示全部楼层

  1. function loginsubmit(frm)

  2.             {

  3.                         if (frm.ekey.value=='无则不填')

  4.                         {

  5.                                 frm.ekey.value='';

  6.                         }

  7.                         if (frm.sendpost)

  8.                         {

  9.                               frm.sendpost.disabled = true;

  10.                         }



  11.                       frm.method = "post";

  12.                       frm.action = (window.location.hostname.indexOf("big5.cmfu.com")<0) ? "/loginuser.asp" : "/www.cmfu.com/loginuser.asp";

  13.                       frm.submit();

  14.             }
复制代码

难道form不是post到了www.cmfu.com/loginuser.asp吗?
为什么post过去后 没有显示出body内容?

  1. use LWP::UserAgent;
  2. use HTTP::Request::Common qw(POST);

  3. my %ua_option = (
  4.     agent => "Mozilla/5.0",
  5.     timeout => 180,
  6. );

  7. my $ua = LWP::UserAgent->new(%ua_option);

  8. my $url = 'http://www.cmfu.com/loginuser.asp'; # or 'https://...';

  9. my %form;
  10. $form{user_name} = 'thevoice';
  11. $form{pass_word} = '835170';
  12. $form{ekey}='';
  13. $form{user_type}=1;
  14. my $req  = POST($url, [%form]);

  15. my $res = $ua->request($req);

  16. if ($res->is_success) {
  17. print $res->header("Content-Type") . "\n";
  18. print $res->status_line . "\n";
  19. print $res->code . "\n";
  20. print $res->header("Server") . "\n";

  21. print $res->content;
  22. } else {
  23. print $res->status_line . "\n";
  24. }
复制代码

用LWP::Simple取得的post form的代码

  1.         <tr>       

  2.                         <td align="right">用户名&nbsp;<input type="text" name="user_name" size=8 maxlength=20 onFocus="this.select()" class=think>&nbsp;</td>

  3.                         <td align="right">密码&nbsp;<input type="password" name="pass_word" size=8 maxlength=16 onFocus="this.select()" class=think>&nbsp;</td>                       

  4.                         <td id='etd' align="right">密宝密码&nbsp;<input type="text" name="ekey" size=8 maxlength=8 onFocus="this.select()" class=think value="无则不填">&nbsp;</td>

  5.                         <td align="right"><a href="https://ekey.poptang.com/challengecode.asp" target="_blank">挑战码</a>&nbsp;3541&nbsp;<input type="hidden" name="user_type" value="1"></td>

  6.                         <td align="right">&nbsp;<input TYPE="checkbox" NAME="selected" onClick="checkstatus(this.form)" value="yes">保持一月&nbsp;<input type="submit" value="登录书屋" style="color:blue" class=stbtm name=sendpost onclick="loginsubmit(this.form);">&nbsp;<input type="button" value="新用户注册" class=stbtm onclick="javascript:location.href='/reg_start.asp'" style='color:red'>&nbsp;</td>

  7.         </tr>
复制代码


我是不是少post了哪个字段?

论坛徽章:
0
6 [报告]
发表于 2007-04-24 10:50 |显示全部楼层
原来有用过个软件 可以显示IE的 交互信息的  但不记得叫什么名字了 不知道你知道吗
sinffer不会用 不过听说是个大家伙 为什么了查看这个就用到sinffer?

论坛徽章:
0
7 [报告]
发表于 2007-04-24 13:12 |显示全部楼层
下了个httpwatch
看网业post信息确实只有
ekey ''
user_type 1
pass_word 835170
user_name thevoice

四个变量
地址也是post到了 http://www.cmfu.com/loginuser.asp

为什么print $res->content  就是body为空呢

  1. <body leftMargin=5 topMargin=0 bgcolor="#ffffff">

  2. <script>window.location.href = '';</script><!--尝试关闭未关闭的数据库-->
复制代码

哪里出错了 真搞不懂

论坛徽章:
0
8 [报告]
发表于 2007-04-24 17:35 |显示全部楼层
还是不行,现在得到的结果说是没有这个用户,是不是我cookie那里处理的有问题?
还有如果我想查看cookie的值 怎么print出来呢?
print $ua->cookie_jar;
得到的是 http::cookie hash 后面一堆

  1. #! /usr/perl/bin
  2. use strict;
  3. use warnings;

  4. use LWP::UserAgent;
  5. use HTTP::Request::Common qw(POST GET);


  6. my %ua_option = (
  7.     agent => "Mozilla/5.0",
  8.     timeout => 180,
  9. );

  10. my $ua = LWP::UserAgent->new(%ua_option);

  11. $ua->cookie_jar({ file => "$ENV{HOME}/.cookies.txt,autosave => 1, ignore_discard => 1" });
  12. my $lurl = 'http://www.cmfu.com/loginuser.asp'; # or 'https://...';
  13. my $url = 'http://www.cmfu.com/index.asp';

  14. my %form;
  15. $form{user_name} = 'the_voice';
  16. $form{pass_word} = '835170';
  17. $form{ekey}='';
  18. $form{user_type}=1;

  19. my $req = GET $url;
  20. my $res = $ua->request($req);

  21. $ua->cookie_jar->extract_cookies($res);
  22. $req  = POST($lurl, [%form]);
  23. $res = $ua->request($req);
  24. $ua->cookie_jar->extract_cookies($res);
  25. if ($res->is_success) {
  26.         print $res->content;
  27. }else{
  28.         print $res->status_line . "\n";
  29. }
复制代码

论坛徽章:
0
9 [报告]
发表于 2007-04-24 17:48 |显示全部楼层
原帖由 路小佳 于 2007-4-24 13:32 发表
嗯,试了下。loginuser.asp要检查ASPSESSIONIDAQBSSRSD
步骤是这样的1.GET index.asp, 保存cookie
2.带cookie, POST
3. 再更新cookie, GET你要的叶面。

这是我的代码。测试是成功的
[code]
my $url = 'ht ...


你的代码我perl不成功
Undefined subroutine &main::http_get called at D:\perl\cmfu.pl line 5.

activeperl + win

论坛徽章:
0
10 [报告]
发表于 2007-04-25 00:16 |显示全部楼层
先get了www.cmfu.com/index.asp 取得了cookie 然后post www.cmfu.com/userlogin.asp
的时候也把先前取得的cookie加进去了 为什么还是不行啊 flw大大帮看下啊

  1. #! /user/perl/bin

  2. use warnings;
  3. use strict;

  4. use LWP::UserAgent;
  5. use HTTP::Cookies;
  6. use HTTP::Request::Common qw(POST GET);

  7. my $ua = LWP::UserAgent->new;
  8. my $cookie_jar = HTTP::Cookies->new;

  9. my $url = "www.cmfu.com/index.asp";
  10. my $lurl = 'http://www.cmfu.com/loginuser.asp';


  11. my $res = $ua->request(HTTP::Request->new(GET=>"http://www.cmfu.com/index.asp"));
  12. $cookie_jar->extract_cookies($res);

  13. my %form;
  14. $form{user_name} = 'thevoice';
  15. $form{pass_word} = '835170';
  16. $form{ekey}='';
  17. $form{user_type}=1;

  18. my $req = POST ($lurl,[%form]);
  19. $cookie_jar->add_cookie_header($req);
  20. $res = $ua->request($req);
  21. $cookie_jar->extract_cookies($res);
  22. if ($res->is_success) {
  23.         print $res->content;
  24. }else{
  25.         print $res->status_line . "\n";
  26. }
复制代码

当用户名写错的时候会提示没有用户那说明 还是传进去了啊
为什么写了正确的 body断掉了啊

  1. <body leftMargin=5 topMargin=0 bgcolor="#ffffff">

  2. <script>window.location.href = '';</script><!--尝试关闭未关闭的数据库-->
复制代码

中间的输出全没有了 我真晕

[ 本帖最后由 thevoice 于 2007-4-25 00:18 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP