zoukankan      html  css  js  c++  java
  • [教程] 以本论坛为例,手把手教你使用按键精灵POST登陆网页

    本帖最后由 isaacc 于 2012-2-26 11:08 编辑

    整个操作,很无脑。
    只要你够勤快,你学不会,你来咬我。
    懒人和伸手党就直接复制代码去玩吧,但我不是叫你拿去干坏事。

    准备工具:WPE和IE浏览器,WPE是一个比较不和谐的东西,我就不上传了,想学的人自己百度去下载一个,注意360要添加白名单。

    你有什么好的拦截数据工具,你可以用你自己觉得习惯的东西,我选择用WPE,是因为我只会用WPE,各种复杂的工具对我来说,不如WPE直接让send与recv函数呈现数据那么直观。如果你们觉得WPE的操作太复杂了,学不会了,我只能和你说,少玩点国产游戏吧,你已经被毒害的不轻了。

    好的,现在你可以一边看这个帖子,一边跟着动手。

    1、关闭除了该帖子以外的浏览器,打开一个IE浏览器窗口,转到http://bbs.anjian.com/

    2、如果你已经是登录状态,请点击“退出”按钮。

    3、打开WPE,点击目标程序,选择IEXPLORE.EXE,你会发现有好多个IEPLORE.EXE,这个时候怎么办呢,一个个的尝试,怎么尝试呢,选择目标之后,点击像 播放 一样的三角形按钮 开始拦截,之后刷新 才打开的论坛的浏览器,如果此时,WPE上发现数据包有动静了,那么就说明我们要拦截封包的IE就是这个进程了,然后把WPE停止拦截掉。

    操作如下图:选择进程
    <ignore_js_op>5.JPG 

    点击三角形的这个拦截按钮进行测试:
    <ignore_js_op>6.jpg 

    当接收到你刷新页面时,如果接收到数据包了,就说明这个进程就是我们需要拦截封包的进程了。然后我们先点击红色方块的停止拦截按钮,停止拦截,停止后WPE视图中会弹出一个数据包窗口,把它关掉,现在暂时不需要他。

    <ignore_js_op>7.JPG 

    然后在把你的论坛帐号,密码输入好,但是不要点击登录,到WPE里,再次点击 拦截按钮,开始拦截以后,回到论坛页面,点击登录。回到WPE,点击停止拦截按钮。好了,关键的数据包就被我们抓到了。如下图所示,第一条是包头,第二条是你的帐号,密码,是否勾选了自动登录。
    <ignore_js_op>8.JPG 

    我们把我们拦截到的内容复制出来先,如图所示,选择一条封包,把下面拉大点。选择右边的明文部分,拉到底,然后复制。出来粘贴到记事本里。 <ignore_js_op>9.JPG 


    1. 我复制出来的包头
    2. POST /member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1 HTTP/1.1..Accept: application/x-shockwave-flash, image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*..Referer: http://bbs.anjian.com/forum.php..Accept-Language: zh-cn..User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET4.0C; .NET4.0E)..Content-Type: application/x-www-form-urlencoded..Accept-Encoding: gzip, deflate..Host: bbs.anjian.com..Content-Length: 80..Connection: Keep-Alive..Cache-Control: no-cache..Cookie: pgv_pvi=6736137576; Hm_lvt_98f3a9670f29a44a87e66a55ac40dda1=1329499272812; pgv_info=ssi=s1221392111; AJSTAT_ok_times=15; Hm_lvt_5d96b144d9b7632ed0ce359527dcc65d=1329511823453; AJSTAT_ok_pages=47; gUmJ_2132_widthauto=-1; gUmJ_2132_sid=sSshM7; gUmJ_2132_lastvisit=1329504510; gUmJ_2132_lastact=1329511820%09home.php%09misc; gUmJ_2132_connect_is_bind=1; gUmJ_2132_sendmail=1; Hm_lpvt_5d96b144d9b7632ed0ce359527dcc65d=1329511823
    3. 这是帐号,密码,cookie时间,其他的都不用管。
    4. username=isaacc&cookietime=2592000&password=******&quickforward=yes&handlekey=ls
    复制代码


    现在,我们要开始写代码了。打开按键精灵。

    首先把帐号,密码,cookie这些东西设置好。
    username = "isaacc" '你的帐号
    password = "******" '你的密码

    buf = "username=" & username & "&cookietime=2592000&password=" & password & "&quickforward=yes&handlekey=ls"

    创建目前最高版本的XMLHTTP对象。
    Set http = CreateObject("Msxml2.ServerXMLHTTP.4.0")

    然后注意看包头:

    1. /member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1
    复制代码

    这一段就是登录页面的地址,也就是,你鼠标指向登录按钮便可以看到状态栏上显示出来的东西。
    所以,我们POST的地址为:
    http.Open "POST", "http://bbs.anjian.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1", False

    然后我们要先取出论坛的Cookie设置,所以要先发送一次,把cookie设置取出来,留做登陆时设置cookie。
    http.send buf
    cookie = http.getResponseHeader("Set-Cookie"'获取Cookie设置

    由于对象已经发送过一次了,要再次发送,需要重新设置POST地址。

    http.open "POST""http://bbs.anjian.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1", False

    那么,现在我们根据WPE拦截到的包头来进行设置POST的包头吧。

    1. Accept: application/x-shockwave-flash, image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
    复制代码

    http.setRequestHeader "Accept", _
    "application/x-shockwave-flash, " & _ 
    "image/gif, image/jpeg, image/pjpeg, " & _
    "application/x-ms-application, " & _ 
    "application/x-ms-xbap, " & _ 
    "application/vnd.ms-xpsdocument, " & _ 
    "application/xaml+xml, */*"
    'Accept表示我们所用的浏览器能接受的Content-type

    1. Referer: http://bbs.anjian.com/forum.php
    复制代码

    http.setRequestHeader "Referer", "http://bbs.anjian.com/forum.php'Referer表示当前页面是从那个页面链接来的

    1. Accept-Language: zh-cn
    复制代码


    http.setRequestHeader "Accept-Language""zh-cn" '语言设置

    然后的 User-Agent: 这一段不要管,这是你电脑上的信息。

    1. Content-Type: application/x-www-form-urlencoded
    复制代码

    http.setRequestHeader "Content-Type""application/x-www-form-urlencoded" 'Content-Type表示客户端提交给服务器文本内容的编码方式 

    Accept-Encoding: 这一段也不用管,这是关于什么压缩的,反正不懂,直接无视它。

    1. Host: bbs.anjian.com
    复制代码

    http.setRequestHeader "Host""bbs.anjian.com" 'Host表示提交请求的主机

    1. Content-Length: 80
    复制代码

    http.setRequestHeader "Content-Length", Len(buf) '表示提交的数据字节大小,也就是发送帐号密码这一条封包的长度。我们上面有一个buf变量,你不会忘了吧。

    1. Connection: Keep-Alive
    复制代码

    http.setRequestHeader "Connection""Keep-Alive" '数据传递完并不立即关闭连接


    1. Cache-Control: no-cache
    复制代码

    http.setRequestHeader "Cache-Control""no-cache" '返回消息中的Cache用于指定网页缓存



    最后,设置Cookie头,利用我们第一次POST取出来的东西来设置。
    http.setRequestHeader "Cookie", cookie

    然后,恩。。发送。。
    http.Send buf


    最后我们把POST后的论坛源码取出来看看是否登录成功了,如果成功了,会显示你的积分等信息。
    http.open "GET", "
    http://bbs.anjian.com/
    ", False
    Http.Send 
    xmlBody = http.ResponseBody
    Set ObjStream = CreateObject("Adodb.Stream")
    With ObjStream
    .Type = 1
    .Mode = 3
    .Open
    .Write xmlBody
    .Position = 0
    .Type = 2
    .Charset = "GB2312"
    BytesToBstr = .ReadText
    .Close
    End With

    Call Plugin.Sys.SetCLB(BytesToBstr)
    MsgBox "已将登陆后论坛的源文件放到剪切板,粘贴到记事本即可看到。"




    好了,完整的源码在下面:

    Dim username, password, cookie, buf
    username = "isaacc" '你的帐号
    password = "******" '你的密码
    buf = "username=" & username & "&cookietime=2592000&password=" & password & "&quickforward=yes&handlekey=ls"
    Set http = CreateObject("Msxml2.ServerXMLHTTP.4.0")
    http.open "POST", "http://bbs.anjian.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1", False
    http.send buf
    cookie = http.getResponseHeader("Set-Cookie")'获取Cookie设置
    
    http.open "POST", "http://bbs.anjian.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1", False
    http.setRequestHeader "Accept", _
    "application/x-shockwave-flash, " & _ 
    "image/gif, image/jpeg, image/pjpeg, " & _
    "application/x-ms-application, " & _ 
    "application/x-ms-xbap, " & _ 
    "application/vnd.ms-xpsdocument, " & _ 
    "application/xaml+xml, */*"
    '表示我们所用的浏览器能接受的Content-type
    
    http.setRequestHeader "Referer", "http://bbs.anjian.com/forum.php" '当前页面是从那个页面链接来的
    http.setRequestHeader "Accept-Language", "zh-cn" '语言设置
    http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" '表示客户端提交给服务器文本内容的编码方式 
    'http.setRequestHeader "Accept-Encoding", "gzip, deflate"
    http.setRequestHeader "Host", "bbs.anjian.com" '所请求的主机
    http.setRequestHeader "Content-Length", Len(buf) '表示提交的数据字节大小
    http.setRequestHeader "Connection", "Keep-Alive" '数据传递完并不立即关闭连接
    http.setRequestHeader "Cache-Control", "no-cache" '返回消息中的Cache用于指定网页缓存
    http.setRequestHeader "Cookie", cookie
    http.Send buf
    
    http.open "GET", "http://bbs.anjian.com/", False
    Http.Send 
    xmlBody = http.ResponseBody
    Set ObjStream = CreateObject("Adodb.Stream")
    With ObjStream
    .Type = 1//2-文本模式读取,1-二进制模式    
    .Mode = 3  //3-读写,1-读,2-写
    .Open
    .Write xmlBody
    .Position = 0
    .Type = 2
    .Charset = "GB2312"
    BytesToBstr = .ReadText
    .Close
    End With
    
    Call Plugin.Sys.SetCLB(BytesToBstr)
    
    MsgBox "已将登陆后论坛的源文件放到剪切板,粘贴到记事本即可看到。"
    

      

     

     
    复制代码
    暗夜之中,才见繁星;危机之下,暗藏转机;事在人为,为者常成。
  • 相关阅读:
    Maven记录
    TP-Link的config.bin的解码
    SLF4JLogFactory does not implement org.apache.commons.logging.LogFactory
    axis1.4调用WebService报找不到分派方法
    Spring在单例bean中使用session、request范围的bean
    使用spring-session同时用session范围bean的问题
    tomcat session共享快速入门
    Log4j配置spring+druid打印日志
    基于WebSocket的多人在线坦克大战demo
    IDEA将maven项目配置到本地tomcat中运行
  • 原文地址:https://www.cnblogs.com/zenghansen/p/3498901.html
Copyright © 2011-2022 走看看