本帖最后由 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. 输入文本框,当点击enter时,做进一步处理!

    //登录用户文本框敲回车键 private void txtCode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.En ...

  2. Android广播机制概述

    1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...

  3. 模拟 ZOJ 3736 Pocket Cube

    题目传送门 题意:魔方最多旋转n次,问最多能使多少面颜色相同 分析:6种状态(3种旋转方式*顺逆方向,其他对称的!),首先先打个表,然后很愉快的DFS.自己写的时候费劲脑汁,代码很长,还TLE了... ...

  4. 01背包 URAL 1073 Square Country

    题目传送门 /* 题意:问n最少能是几个数的平方和 01背包:j*j的土地买不买的问题 详细解释:http://www.cnblogs.com/vongang/archive/2011/10/07/2 ...

  5. 计算几何 HDOJ 4720 Naive and Silly Muggles

    题目传送门 /* 题意:给三个点求它们的外接圆,判断一个点是否在园内 计算几何:我用重心当圆心竟然AC了,数据真水:) 正解以后补充,http://www.cnblogs.com/kuangbin/a ...

  6. FZU2218 Simple String Problem(状压DP)

    首先,定义S,表示前k个字符出现的集合,用二进制来压缩. 接下来,推出dp1[S],表示集合为S的子串的最长长度. 然后根据dp1[S]再推出dp2[S],表示集合为S或S的子集的子串的最长长度. 最 ...

  7. chrome developer tool 调试技巧

    这篇文章是根据目前 chrome 稳定版(19.0.1084.52 m)写的, 因为 google 也在不断完善chrome developer tool, 所以 chrome 版本不同可能稍有差别. ...

  8. 【BZOJ】1098: [POI2007]办公楼biu(补图+bfs+链表)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1098 显然答案是补图连通块..... 想到用并查集...可是连补图的边都已经...n^2了...怎么 ...

  9. [转] - JAR文件包及jar命令详解 ( MANIFEST.MF的用法 )

    常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像. chm 文档一样双击运行了:而另一种是使用 JET 来进 ...

  10. thinkphp框架中session常识

    在看别人代码时候,发现他,在tp框架中使用session没有些session_start();然后我去查看了手册初始化设置方法 无需手动调用,在App类的初始化工作结束后会自动调用,通常项目只需要配置 ...