Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何验证twitter Id';的URL以了解其当前状态_Excel_Vba_Twitter - Fatal编程技术网

Excel 如何验证twitter Id';的URL以了解其当前状态

Excel 如何验证twitter Id';的URL以了解其当前状态,excel,vba,twitter,Excel,Vba,Twitter,我刚刚下载了twitter ID的URL来了解它们的状态,ID仍然是活动的,被阻止的,暂停的,或者被删除的。我正在使用下面的VBA代码,但它不能像我上面提到的那样工作 Public PageSource As String Public PageSourceOpt As Integer Public httpRequest As Object Function GetURLRedirect(ByVal Cell As Range, Optional AllowRedirects As Bool

我刚刚下载了twitter ID的URL来了解它们的状态,ID仍然是
活动的
被阻止的
暂停的
,或者
被删除的
。我正在使用下面的VBA代码,但它不能像我上面提到的那样工作

Public PageSource As String
Public PageSourceOpt As Integer
Public httpRequest As Object

Function GetURLRedirect(ByVal Cell As Range, Optional AllowRedirects As Boolean)
    Const WinHttpRequestOption_EnableRedirects = 6
    Dim URL As String
    URL = Cell.Text
    If httpRequest Is Nothing Then
        On Error Resume Next
        Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
        If httpRequest Is Nothing Then
            Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5")
        End If
        Err.Clear
        On Error GoTo 0
    End If
    ' Control if the URL being queried is allowed to redirect.
    httpRequest.Option(WinHttpRequestOption_EnableRedirects) = AllowRedirects
    ' Clear any pervious web page source information
    PageSource = ""
    ' Add protocol if missing
    If InStr(1, URL, "://") = 0 Then
        URL = "http://" & URL
    End If
    ' Launch the HTTP httpRequest synchronously
    On Error Resume Next
    httpRequest.Open "GET", URL, False
    If Err.Number <> 0 Then
        ' Handle connection errors
        Cell.Offset(0, 1) = Err.Description
        Err.Clear
        Exit Function
    End If
    On Error GoTo 0
    ' Send the http httpRequest for server status
    On Error Resume Next
    httpRequest.Send
    httpRequest.WaitForResponse
    If Err.Number <> 0 Then
        ' Handle server errors
        PageSource = "Error"
        Cell.Offset(0, 1) = Err.Description
        Err.Clear
    Else
        ' Show HTTP response info
        Cell.Offset(0, 1) = httpRequest.Status & " - " & httpRequest.StatusText
        If httpRequest.Status > 300 And httpRequest.Status < 400 Then
            Cell.Offset(0, 2) = httpRequest.GetResponseHeader("Location")
        End If
        ' Save the web page text
        If PageSourceOpt <> 0 Then
            PageSource = httpRequest.ResponseText
            Cell.Offset(0, 3) = PageSource
            Cell.Offset(0, 3).ClearFormats
        End If
    End If
    On Error GoTo 0
End Function

Sub ValidateURLs()
    Dim Cell As Range
    Dim Rng As Range
    Dim RngEnd As Range
    Dim Status As String
    Dim Wks As Worksheet
    Set Wks = ActiveSheet
    Set Rng = Wks.Range(TextBox1.Text)
    Set RngEnd = Wks.Cells(Rows.Count, Rng.Column).End(xlUp)
    If RngEnd.Row < Rng.Row Then Exit Sub Else Set Rng = Wks.Range(Rng, RngEnd)
    Cells(3, 5) = RngEnd.Row - 2
    For Each Cell In Rng
        GetURLRedirect Cell
        DoEvents
        Cells(5, 5) = Cell.Row - 2
    Next Cell
End Sub

Private Sub CheckBox1_Click()
    PageSourceOpt = CheckBox1.Value
End Sub

Private Sub CommandButton1_Click()
    ValidateURLs
End Sub

Private Sub TextBox1_Change()
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    TextBox1.Text = ActiveCell.Address
End Sub
请指导我哪里的代码工作不好。我想要四种状态

  • 活跃的
  • 暂停
  • 删除
  • 封锁

  • 我希望这是有道理的。谢谢

    我用做了一个快速的URL测试,看起来Twitter检查了浏览器的用户代理。因此,由于Postman默认使用
    用户代理:PostmanRuntime/7.26.8
    Twitter会响应
    400错误请求,并且“不再支持此浏览器”

    如果不设置任何用户代理(如在VBA中所做的),则会发生完全相同的情况

    现在,您可以添加一个伪用户代理,如
    用户代理:Mozilla/5.0(兼容;Googlebot/2.1+http://www.google.com/bot.html)
    添加到标题中。然后你得到一个
    200 OK
    ,Twitter回应“JavaScript在你的浏览器中被停用”

    所以,也许这仍然不是你想要的(我不知道如何在这里欺骗Twitter),但实际上你至少现在知道那里发生了什么

    我建议使用Postman之类的工具测试和构建请求,因为它更容易调查响应

    因此,实际上代码工作正常,但问题是Twitter如何处理您的请求。因为它显然会检查是否有正在运行的JavaScript,所以这只会在浏览器中起作用


    这个问题的正确解决方案可能是使用Twitter提供的官方API。

    我对URL进行了快速测试,看起来Twitter检查了浏览器的用户代理。因此,由于Postman默认使用
    用户代理:PostmanRuntime/7.26.8
    Twitter会响应
    400错误请求,并且“不再支持此浏览器”

    如果不设置任何用户代理(如在VBA中所做的),则会发生完全相同的情况

    现在,您可以添加一个伪用户代理,如
    用户代理:Mozilla/5.0(兼容;Googlebot/2.1+http://www.google.com/bot.html)
    添加到标题中。然后你得到一个
    200 OK
    ,Twitter回应“JavaScript在你的浏览器中被停用”

    所以,也许这仍然不是你想要的(我不知道如何在这里欺骗Twitter),但实际上你至少现在知道那里发生了什么

    我建议使用Postman之类的工具测试和构建请求,因为它更容易调查响应

    因此,实际上代码工作正常,但问题是Twitter如何处理您的请求。因为它显然会检查是否有正在运行的JavaScript,所以这只会在浏览器中起作用


    此问题的正确解决方案可能是使用Twitter提供的官方API。

    您是编写此代码还是从某个地方下载的?@SiddharthRout是的,我是在网上找到的,我正在努力验证我的好友列表。您是编写此代码还是从某个地方下载的?@SiddharthRout是的,我是在网上找到的,我正在努力验证我的朋友列表。
    https://twitter.com/Adam_Creighton/status/728384693255602176.html
    https://twitter.com/Adam_Creighton/status/728384180082479104.html
    https://twitter.com/Adam_Creighton/status/728382362610868228.html
    https://twitter.com/Adam_Creighton/status/728337281749110784.html
    https://twitter.com/Adam_Creighton/status/728329768693731328.html
    https://twitter.com/Adam_Creighton/status/728114035770597377.html
    https://twitter.com/Adam_Creighton/status/728055476353519616.html
    https://twitter.com/Adam_Creighton/status/727989216852869121.html
    https://twitter.com/Adam_Creighton/status/727694698299564033.html
    https://twitter.com/Adam_Creighton/status/727679014454747136.html
    https://twitter.com/Adam_Creighton/status/727633679300747264.html
    https://twitter.com/Adam_Creighton/status/727632901416714240.html
    https://twitter.com/Adam_Creighton/status/727273627729567744.html
    https://twitter.com/Adam_Creighton/status/727247264616341508.html
    https://twitter.com/Adam_Creighton/status/727084719641268224.html
    https://twitter.com/Adam_Creighton/status/726896995084836864.html
    https://twitter.com/Adam_Creighton/status/726540699231875073.html
    https://twitter.com/Adam_Creighton/status/726206873746034688.html
    https://twitter.com/Adam_Creighton/status/725886004574351363.html
    https://twitter.com/Adam_Creighton/status/725841017534963712.html
    https://twitter.com/Adam_Creighton/status/725804881869570048.html
    https://twitter.com/Adam_Creighton/status/725803040050020353.html
    https://twitter.com/Adam_Creighton/status/725671578822807556.html
    https://twitter.com/Adam_Creighton/status/725657863989784576.html
    https://twitter.com/Adam_Creighton/status/725657863989780480.html
    https://twitter.com/Adam_Creighton/status/725233500169719808.html
    https://twitter.com/Adam_Creighton/status/725164262893584389.html
    https://twitter.com/Adam_Creighton/status/724729328026558464.html
    https://twitter.com/Adam_Creighton/status/724384631286419456.html
    https://twitter.com/Adam_Creighton/status/723647669625737216.html
    https://twitter.com/Adam_Creighton/status/723645534729175041.html
    https://twitter.com/Adam_Creighton/status/723271156623499264.html
    https://twitter.com/Adam_Creighton/status/723056630829477888.html
    https://twitter.com/Adam_Creighton/status/722902550438019072.html
    https://twitter.com/Adam_Creighton/status/722549303340740608.html
    https://twitter.com/Adam_Creighton/status/722544334642356225.html
    https://twitter.com/Adam_Creighton/status/722297007256154112.html
    https://twitter.com/Adam_Creighton/status/722237965745848320.html
    https://twitter.com/Adam_Creighton/status/1350293980911607811.html
    https://twitter.com/Adam_Creighton/status/1350213537965117440.html
    https://twitter.com/Adam_Creighton/status/1350210436168204289.html
    https://twitter.com/Adam_Creighton/status/1349963632210182145.html
    https://twitter.com/Adam_Creighton/status/1349930349627801600.html
    https://twitter.com/Adam_Creighton/status/1349916656609316871.html
    https://twitter.com/Adam_Creighton/status/1349901209054838785.html
    https://twitter.com/Adam_Creighton/status/1349900058196541442.html
    https://twitter.com/Adam_Creighton/status/1349864288127598592.html
    https://twitter.com/Adam_Creighton/status/1349849317821988865.html
    https://twitter.com/Adam_Creighton/status/1349848716761460737.html
    https://twitter.com/Adam_Creighton/status/1349830160707534850.html
    https://twitter.com/Adam_Creighton/status/1349829937478320129.html
    https://twitter.com/Adam_Creighton/status/1349693266359324673.html
    https://twitter.com/Adam_Creighton/status/1349691888094220295.html
    https://twitter.com/Adam_Creighton/status/1349685869771333632.html
    https://twitter.com/Adam_Creighton/status/1349490785373229057.html
    https://twitter.com/Adam_Creighton/status/1349487954113093632.html
    https://twitter.com/Adam_Creighton/status/1349474349149954049.html
    https://twitter.com/Adam_Creighton/status/1349333840553152517.html
    https://twitter.com/Adam_Creighton/status/1349323821929484290.html
    https://twitter.com/Adam_Creighton/status/1349233656926064641.html
    https://twitter.com/Adam_Creighton/status/1348909750948282370.html
    https://twitter.com/Adam_Creighton/status/1348893075855183875.html
    https://twitter.com/Adam_Creighton/status/1348837433303986177.html
    https://twitter.com/Adam_Creighton/status/1348782225618137090.html
    https://twitter.com/Adam_Creighton/status/1348758112480546816.html
    https://twitter.com/Adam_Creighton/status/1348748262371561472.html
    https://twitter.com/Adam_Creighton/status/1348582349454204931.html
    https://twitter.com/Adam_Creighton/status/1348578956417503232.html
    https://twitter.com/Adam_Creighton/status/1348570633102188544.html
    https://twitter.com/Adam_Creighton/status/1348538375788060675.html
    https://twitter.com/Adam_Creighton/status/1348535908576894976.html
    https://twitter.com/Adam_Creighton/status/1348532398632275970.html
    https://twitter.com/Adam_Creighton/status/1348527916167032834.html
    https://twitter.com/Adam_Creighton/status/1348523333776601088.html
    https://twitter.com/Adam_Creighton/status/1348415822176292865.html
    https://twitter.com/Adam_Creighton/status/1348071704547840003.html
    https://twitter.com/Adam_Creighton/status/1348053707015901187.html
    https://twitter.com/Adam_Creighton/status/1194511912790151173.html
    https://twitter.com/Adam_Creighton/status/1142998150505828353.html