如何使用VBA从Excel中的一系列重定向中找到最终的URL?

时间:2015-08-31 15:38:40

标签: excel vba excel-vba redirect meta

类似于a year ago提出的问题,但他们的解决方案对我不起作用。我有一堆缩短的网址,可以让我的客户通过重定向更轻松地访问产品页面(元刷新)。例如domain.com/1234将客户端重定向到domain.com/category/product-1234。

多年来,由于我们拥有的产品数量和我们开展的广告系列,我的公司积累了大量重定向。我有一份所有现有重定向的列表,我想创建一个等效的最终网址列表。

I Frankensteined下面的函数,但当状态为200时,它只返回重定向URL。我希望它返回缩短的URL重定向客户端的最终URL。

即。 FinalURL(“domain.com/1234”)返回“”domain.com/1234“,当我希望它返回”domain.com/category/product-1234“

我需要在IE中打开设置吗?我启用了“跨域访问数据源”,我是否错过了什么?

任何帮助?

Public Function FinalURL(sURL As String) As String
    On Error Resume Next
       Set oHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
         If oHTTP Is Nothing Then
            Set oHTTP = CreateObject("WinHttp.WinHttpRequest.5")
         End If
       Err.Clear
    On Error GoTo 0

    oHTTP.Option(WinHttpRequestOption_EnableRedirects) = True

  On Error GoTo Oops
  With oHTTP
    .Open "GET", sURL
    .Send

    Select Case .Status
      Case 200: FinalURL = .Option(1)
      Case 403: FinalURL = "Forbidden"
      Case 404: FinalURL = "Not Found"
      Case 410: FinalURL = "Gone"
      Case 503: FinalURL = "Service Unavailable"
      Case Else: FinalURL = False
    End Select
    Exit Function
  End With

Oops:
  FinalURL = False
End Function

如果有帮助,重定向的编码如下:

<html>
<head>
<meta http-equiv="refresh" content="0; url=LinkToTrackingURLThatPointsToNewPage">
</head>
</html>

0 个答案:

没有答案