通过安全代理从站点检索数据

时间:2015-03-20 17:56:13

标签: vba excel-vba httprequest http-proxy excel

我的客户将访问我公司的网站以使用我正在处理的子网格检索数据信息。这必须使用安全代理来完成,因为他的公司阻止访问某些站点。我无法在他的计算机上测试我的sub,显然他无法发送代理信息(即:用户名,密码,IP,端口......)

Sub login_sub()

    url = "http://localhost/php004/loginExcelAddin.php?username=" + username + "&password=" + password
    Dim httpObject As Object
    Dim response As String
    Set httpObject = CreateObject("WinHttp.WinHttpRequest.5.1")
    httpObject.Open "GET", url, False
    httpObject.SetProxy HTTPREQUEST_PROXYSETTING_PROXY, proxyIP + ":" + proxyPortNumber
    httpObject.send
    response = httpObject.responseText
    On Error GoTo errorHandler
    If response = True Then
        loggedIn = True
        MsgBox "You are logged in"
    End If
    Application.Calculate
    Exit Sub

errorHandler:
    MsgBox "Login has failed"

End Sub

(用户名,密码,proxyPortNumber,proxyIP是填写在表单中的公共变量)

我一直在努力解决这个问题。任何人都可以告诉我,如果我朝着正确的方向前进,我可以为客户发送此代码吗?

由于

1 个答案:

答案 0 :(得分:1)

啊,在我的职业生涯中,我多次经历过这一切。从测试策略的角度来看(而不是回顾上面的代码),有几种可能的方法组合来测试所有这些:

  1. 客户的IT部门应该能够为您提供有关其代理如何将客户身份信息包含在出站请求中的规范。一些代理可以在请求头中使用备选认证信息数据;您需要确切知道客户端的代理如何传递身份验证数据(这可能会对可能使用Active Directory / LDAP作为中介的企业代理产生麻烦。)
  2. 理想的测试第一阶段是在您自己公司内部设置一个测试认证代理,尽可能与客户端相同的品牌,版本和配置。将您的Excel代码放到笔记本电脑上,并将笔记本电脑连接到此测试代理的“外部”。这将允许您测试代码以通过访问您控制下的类似代理来解决错误。
  3. 当然,很可能客户端的代理可能与您的测试代理不同,所以即使在执行第2步后,一旦将其提供给客户端,仍可能存在问题。如果允许客户端使用WebEx等窗口共享服务,则可以与客户端建立WebEx会话,并让他们在第一次使用您的代码时与您共享屏幕。如果失败,您可以在观看调试结果时通过Excel调试器进行调试会话。
    • 3A。如果客户的IT部门允许更全面的共享工具,允许您远程控制客户端的桌面(他们正在观看),这甚至会更理想。但是,如果客户的IT部门已经在进行出站代理,他们可能太偏执了,不允许这样做。
  4. 如果不允许类似WebEx的会话,那么您可以将诊断输出添加到日志文件中,然后他们可以将其发送给您,或者在电话中口头告诉您。这不是完成调试的最佳方式。
    • 4A。如果不允许使用类似WebEx的方法,但如果客户端有Excel专家和IT专家,您可以让他们在电话上与您一起进行测试。再次不是最优的,但优于3,因为你不是在和一个无能的客户交谈。
  5. 最后也是最糟糕的情况,您可能需要前往客户的网站在自己的计算机上进行最终测试(当然还有客户的监督)。