本帖最后由 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>

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

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

<ignore_js_op>

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

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

  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 "已将登陆后论坛的源文件放到剪切板,粘贴到记事本即可看到。"

  

 

复制代码

[教程] 以本论坛为例,手把手教你使用按键精灵POST登陆网页的更多相关文章

  1. Android简易实战教程--第十九话《手把手教您监听EditText文本变化,实现抖动和震动的效果》

    昨晚写博客太仓促,代码结构有问题,早上测试发现没法监听文本变化!今日更改一下.真心见谅啦,哈哈!主活动的代码已经改好了,看截图这次的确实现了文本监听变化情况. 监听文本输入情况,仅仅限于土司略显low ...

  2. PWA入门:手把手教你制作一个PWA应用

    摘要: PWA图文教程 原文:PWA入门:手把手教你制作一个PWA应用 作者:MudOnTire Fundebug经授权转载,版权归原作者所有. 简介 Web前端的同学是否想过学习app开发,以弥补自 ...

  3. 手把手教你用 FastDFS 构建分布式文件管理系统

    说起分布式文件管理系统,大家可能很容易想到 HDFS.GFS 等系统,前者是 Hadoop 的一部分,后者则是 Google 提供的分布式文件管理系统.除了这些之外,国内淘宝和腾讯也有自己的分布式文件 ...

  4. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(三)-使用Travis自动部署Hexo(1)

    前言 前面两篇文章介绍了在github上使用hexo搭建博客的基本环境和hexo相关参数设置等. 基于目前,博客基本上是可以完美运行了. 但是,有一点是不太好,就是源码同步问题,如果在不同的电脑上写文 ...

  5. 手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告-02(非常详细,非常实用)

    简介 前边一篇文章是分享如何搭建pytest+Allure的环境,从而生成一份精美的.让人耳目一新的测试报告,但是有的小伙伴或者童鞋们可能会问,我能不能按照自己的想法为我的项目测试结果量身打造一份属于 ...

  6. 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  7. 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  8. 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  9. 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)

    1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...

随机推荐

  1. 如何正确读取war包中配置文件的路径

    转自:http://free-chenwei.iteye.com/blog/1507480 下面展示一段代码String path = getClass().getResource("/&q ...

  2. C++的那些事:流与IO类

    1.流的概念 "流"就是"流动",是物质从一处向另一处流动的过程,比如我们能感知到的水流.C++的流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存) ...

  3. 暴力枚举 UVA 10976 Fractions Again?!

    题目传送门 /* x>=y, 1/x <= 1/y, 因此1/k - 1/y <= 1/y, 即y <= 2*k */ #include <cstdio> #inc ...

  4. Sql不区分大小写查询

    select a.* from Pair_User  a where 1=1   and   UPPER(a.UserID) like 'EMH1001%' collate Chinese_PRC_C ...

  5. MP3/视频播放

    简单的视频.MP3播放 <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equ ...

  6. Designing CSS Layouts With Flexbox Is As Easy As Pie

    This article is an updated excerpt of the chapter “Restyle, Recode, Reimagine With CSS3″ from our Sm ...

  7. 生产环境下一定要开启mysqlbinlog

    在没有备份数据库的情况下,可以用binlog进行恢复 在生产环境下安全第一,损失一点点效率换来的安全还是值得的. http://www.cnblogs.com/zc22/archive/2013/06 ...

  8. HDU 4604 Deque(最长上升子序)

    题目链接 本来就对N*log(N)算法不大会....然后各种跪了,求出最长不下降+最长不上升-最少相同元素.求相同元素,用二分求上界搞的.代码里4个二分.... #include <cstdio ...

  9. 学习了ZKW费用流

    所谓ZKW费用流,其实就是Dinic. 若干年前有一个人发明了最小增广路算法,每次用BFS找一条增广路,时间O(nm^2) 然后被DinicD飞了:我们为什么不可以在长度不变时多路增广呢?时间O(n^ ...

  10. java定时器的使用

    定时器类Timer在java.util包中.使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定指定的任务task在指定的延迟delay后 ...