|
楼主 |
发表于 2014-10-28 16:46
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 wcymiss 于 2014-10-29 14:25 编辑
登录之后可以做什么----查询数据
登录并非是我们的最终目的。最终目的是查询一些非登录不能查看的数据,或是发送数据。如论坛登录后,可下载附件,可发帖;邮箱登录后,可收件发件。
前面讲过,xmlhttp和winhttp只要该对象不销毁,都可以保持cookie。我们登录就是为了取得一个被允许查看数据和发送数据的cookie,然后执行查询和发送的请求。
仍以网易邮箱为例:
登录后网页显示邮件列表,此过程抓包。
抓包后,在fiddler内搜索邮件列表页面内的某字符串,查找到显示邮件列表的页面:(Response返回一串JSON数据)
拷贝Request的相关内容,编写代码:- Sub Main()
- Const username As String = "vbatest"
- Const password As String = "12341234"
- Dim strText As String
- Dim sid As String
-
- With CreateObject("MSXML2.XMLHTTP") 'CreateObject("WinHttp.WinHttpRequest.5.1") '
- .Open "POST", "https://mail.163.com/entry/cgi/ntesdoor?df=mail163_letter&funcid=loginone&iframe=1&passtype=1&product=mail163&race=63_31_31_gz&uid=" & username & "@163.com", False
- .setrequestheader "Content-Type", "application/x-www-form-urlencoded"
- .send "username=" & username & "&password=" & password
- sid = Split(Split(.responsetext, "sid=")(1), "&")(0)
-
- .Open "POST", "http://mail.163.com/js6/s?sid=" & sid & "&func=mbox:listMessages&topNav_mobileIcon_show=1&TopTabReaderShow=1&TopTabReaderTipsShow=1&FrameMasterMailPopupClose=1&welcome_welcomemodule_mailrecom_click=1&LeftNavfolder1Click=1&mbox_folder_enter=1", False
- .setrequestheader "Content-Type", "application/x-www-form-urlencoded"
- .setrequestheader "Accept", "text/javascript" '不加这句的话返回的不是json是xml数据
- .send "var=" & encodeURI("<?xml version=""1.0""?>" _
- & "<object>" _
- & "<int name=""fid"">1</int>" _
- & "<string name=""order"">date</string>" _
- & "<boolean name=""desc"">true</boolean>" _
- & "<int name=""limit"">20</int>" _
- & "<int name=""start"">0</int>" _
- & "<boolean name=""skipLockedFolders"">false</boolean>" _
- & "<string name=""topFlag"">top</string>" _
- & "<boolean name=""returnTag"">true</boolean>" _
- & "<boolean name=""returnTotal"">true</boolean>" _
- & "</object>") Debug.Print .responsetext
- End With
- End Sub
复制代码 查看邮件列表的SendData是一个xml数据。不管它什么数据,我们都照样copy就是了。
|
|