登录之后可以做什么----发送数据上一贴说的是登录后查看邮件。这次来试一次发送邮件。手工登录、发送邮件,同时抓包。截取发送邮件内容的部分字符串作为搜索文本,找到session。拷贝Request里相关内容,编写代码:Sub Main() Const Username As String = 'vbatest' Const Password As String = '12341234' Const Account As String = 'vbatest@163.com' Const ToAccount As String = 'wcymiss@163.com' Const Subject As String = '主题:用web发送邮件' Const Content As String = '正文:看到此邮件则证明发送成功' Dim strText As String Dim Sid As String Dim Senddata With CreateObject('MSXML2.XMLHTTP') .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:compose&FrameMasterMailPopupClose=1&cl_send=2&l=compose&action=deliver', False .setrequestheader 'Content-Type', 'application/x-www-form-urlencoded' .setrequestheader 'Accept', 'text/javascript' '不加这句的话返回的不是json是xml数据 Senddata = 'var=' & encodeURI('' _ & '') .Send Senddata Debug.Print .responsetext End WithEnd SubFunction encodeURI(strTobecoded As String) As String With CreateObject('msscriptcontrol.scriptcontrol') .Language = 'JavaScript' encodeURI = .eval('encodeURIComponent('' & strTobecoded & '');') End WithEnd FunctionFunction GetLongTime() With CreateObject('msscriptcontrol.scriptcontrol') .Language = 'JavaScript' GetLongTime = .eval('new Date().getTime();') End WithEnd Function复制代码SendData里有部分参数还可以精简。有兴趣的话可以自己测试。GetLongTime自定义函数的作用是产生一个国际通用的表示当前时间的13位数字。
|