ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用VBA使用COOKIE传递参数进行发包的一个案例

如何用VBA使用COOKIE传递参数进行发包的一个案例

作者:绿色风 分类: 时间:2022-08-17 浏览:212
楼主
xmyjk
Q:附件里有考生的考号和姓名,后面跟着各科科目。要求使用VBA自动提交姓名和考号,并把获取的成绩自动填写在表格里面,
查询地址 http://www.hd.qdedu.net/index.aspx?pkId=4282首页有个2012中考查询,点开就看到了。

A:用抓包软件测试的时候,

 
发现,居然POST里面没有数据,但是,明明我们输入和考号和姓名,那么参数传递怎么传递的呢?
查询COOKIE,有CONDITION这一个字段,猜测,应该是参数在这里面。(网页码源也能看出来,只是要看好多脚本)

 
CONDITION里面的值是通过FIDDLER里面的转码工具以后转码,就豁然开朗了。如图:

 
  1. Option Explicit
  2. Sub test()
  3.     Dim xmlhttp, Cookie$, p&, tmp, I&
  4.     For p = 2 To [a65536].End(3).Row '循环历遍工作表的考生数据
  5.   '设置COOKIE字段,查询参数隐藏在COOKIE中
  6.         Cookie = "result=HTFxsWuUdjAjHeUmWGEY0sVvaz5FRr6WUNVp6KITZdfGk3pqZT0k5ADA%2FxiKm2fQh8Q8RJWDlhEZHV3QYMbIRGCHExX%2FzFeRIfYaXEnOZY3oMwBTYWXrBicJK8skRNMwCmYN79gdLpY%2BBB7n1D0R%2BqqQSpIsedAgUt2uikg59A1GplHEDY1fHDI1L2Qz%2FH54; " & _
  7.                  "condition=%E4%B8%AD%E8%80%83%E8%80%83%E5%8F%B7%20%3D%20'" & Cells(p, 1).Value & "'%20AND%20%E4%B8%AD%E8%80%83%E5%A7%93%E5%90%8D%20%3D%20'" & UrlEncode(Cells(p, 2).Value) & "'%20; menuname=%E6%88%90%E7%BB%A9%E6%9F%A5%E8%AF%A2; layouttemplateid=548; " & _
  8.                  "resultformat=zCeOnGpbMkF899qfVZ2tHmEE5mQVApOcmv8YmUVIRcZk0Y7H%2FbeaaWDfO0Ig%2BvEK6CxzR%2BH8j7Hldbr%2B1O01AYu%2FtYF1U%2FE6g0jOy1D5DxQ26tcdOMAF7f%2FSHEqyKIO6**lI9SVnRH7gRF1m52liPWVDF3%2FnsO1jlZ6fTHhkw1pa08TNrZqaqEVDINTSKo3yUjf8jRLJ7opBm94rxbdGqZ9OnT2nAb04Vax%2FCj%2BIWO38VisR53P4x%2FQa08w6vbNMaLBCfC0ZkB5T0SIcGb7byPdILFJo2plvPQX%2FReTnmmnoZYbbz8676gXPkpARduGUU4tLdOS9kBq1KvYuyDzTWVZBUWPaSZjxcxHbUctQn2o0BwZS%2Fg9yLk9cgz33zOBgyoKiQXNq%2BKi0xgQpsAGVeCKZSjH%2FxcdiLn4FmKuWjnasaMSCOjBR9uLLjKGeG202uHATwxvmmks%2BVqVUY%2FohPgkCmaqFzWzqpImWOkXjaWxAWOlrpjemSjfmGgosXJHtgDH4VyJN03xlrvPnL%2FZ4wU%2FNOsSwHBkmpwiSXLGoVw%3D;"
  9.         Set xmlhttp = CreateObject("WinHttp.WinHttpRequest.5.1") '建立WINHTTP对象
  10.         With xmlhttp
  11.             .Option(6) = 1 '允许重定向
  12.             .Open "GET", "http://www.hd.qdedu.net/newsinfo.aspx?template=infosearch", False '发包
  13.             .setRequestHeader "Cookie", Cookie '设置COOKIE
  14.             .SEND
  15.             tmp = Filter(Split(.responsetext, "</td>"), "#fff;font-size:12;"">") '切取结果数据至数组
  16.         End With
  17.         For I = 0 To UBound(tmp) '以下均为结果数据处理过程
  18.             tmp(I) = Replace(Replace(tmp(I), "</font>", ""), " ", "")
  19.             tmp(I) = Split(tmp(I), ">")(UBound(Split(tmp(I), ">")))
  20.         Next
  21.         Cells(p, 3).Resize(1, UBound(tmp) + 1) = tmp
  22.     Next
  23. End Sub


  24. Public Function UrlEncode(ByRef szString As String) As String '由于URL或者发包不支持中文和符号,需要转码
  25.     Dim szChar As String
  26.     Dim szTemp As String
  27.     Dim szCode As String
  28.     Dim szHex As String
  29.     Dim szBin As String
  30.     Dim iCount1 As Integer
  31.     Dim iCount2 As Integer
  32.     Dim iStrLen1 As Integer
  33.     Dim iStrLen2 As Integer
  34.     Dim lResult As Long
  35.     Dim lAscVal As Long
  36.     szString = Trim$(szString)
  37.     iStrLen1 = Len(szString)
  38.     For iCount1 = 1 To iStrLen1
  39.         szChar = Mid$(szString, iCount1, 1)
  40.         lAscVal = AscW(szChar)
  41.         If lAscVal >= &H0 And lAscVal <= &HFF Then
  42.             If (lAscVal >= &H30 And lAscVal <= &H39) Or _
  43.                (lAscVal >= &H41 And lAscVal <= &H5A) Or _
  44.                (lAscVal >= &H61 And lAscVal <= &H7A) Then
  45.                 szCode = szCode & szChar
  46.             Else
  47.                 szCode = szCode & "%" & Hex(AscW(szChar))
  48.             End If
  49.         Else
  50.             szHex = Hex(AscW(szChar))
  51.             iStrLen2 = Len(szHex)
  52.             For iCount2 = 1 To iStrLen2
  53.                 szChar = Mid$(szHex, iCount2, 1)
  54.                 Select Case szChar
  55.                 Case Is = "0"
  56.                     szBin = szBin & "0000"
  57.                 Case Is = "1"
  58.                     szBin = szBin & "0001"
  59.                 Case Is = "2"
  60.                     szBin = szBin & "0010"
  61.                 Case Is = "3"
  62.                     szBin = szBin & "0011"
  63.                 Case Is = "4"
  64.                     szBin = szBin & "0100"
  65.                 Case Is = "5"
  66.                     szBin = szBin & "0101"
  67.                 Case Is = "6"
  68.                     szBin = szBin & "0110"
  69.                 Case Is = "7"
  70.                     szBin = szBin & "0111"
  71.                 Case Is = "8"
  72.                     szBin = szBin & "1000"
  73.                 Case Is = "9"
  74.                     szBin = szBin & "1001"
  75.                 Case Is = "A"
  76.                     szBin = szBin & "1010"
  77.                 Case Is = "B"
  78.                     szBin = szBin & "1011"
  79.                 Case Is = "C"
  80.                     szBin = szBin & "1100"
  81.                 Case Is = "D"
  82.                     szBin = szBin & "1101"
  83.                 Case Is = "E"
  84.                     szBin = szBin & "1110"
  85.                 Case Is = "F"
  86.                     szBin = szBin & "1111"
  87.                 Case Else
  88.                 End Select
  89.             Next iCount2
  90.             szTemp = "1110" & Left$(szBin, 4) & "10" & Mid$(szBin, 5, 6) & "10" & Right$(szBin, 6)
  91.             For iCount2 = 1 To 24
  92.                 If Mid$(szTemp, iCount2, 1) = "1" Then
  93.                     lResult = lResult + 1 * 2 ^ (24 - iCount2)
  94.                 Else: lResult = lResult + 0 * 2 ^ (24 - iCount2)
  95.                 End If
  96.             Next iCount2
  97.             szTemp = Hex(lResult)
  98.             szCode = szCode & "%" & Left$(szTemp, 2) & "%" & Mid$(szTemp, 3, 2) & "%" & Right$(szTemp, 2)
  99.         End If
  100.         szBin = vbNullString
  101.         lResult = 0
  102.     Next iCount1
  103.     UrlEncode = szCode
  104. End Function

中考数据.rar
2楼
い卋玑┾宝珼
代码收藏下,谢谢妃妃
3楼
xyf2210
妃妃V5
4楼
传递
看到“传递”2字 ,条件反射来看看
5楼
老糊涂
收藏

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap