0

根据 IP 时区,我在使用 Chrome DevTools SetTimeZoneOverrideCommand 时遇到问题。但是当我检查 Whoer.net 时仍然显示是系统时间。

这里有3个问题:

  1. 我在 selenium 代理中使用的是 Rotate Proxy 那么是否可以通过使用其他功能来检查 IP 来维护相同的代理?

  2. SetTimeZoneOverride 无法更改欺骗我的系统与 IP 时区时间相同。

  3. 在 Whoer.net 中可能会更改该 DNS 路由


Imports System
Imports System.IO
Imports System.Text.RegularExpressions
Imports OpenQA.Selenium
Imports OpenQA.Selenium.Chrome
Imports Zu.ChromeDevTools

Module Program
    Sub Main(args As String())
        Console.WriteLine("Current IP: " & GetCurrentIP())


        Dim browser_option As New ChromeOptions
        Dim NewUAC As String = Random_UAC()
        browser_option.AddArgument("user-agent=" & NewUAC)
        browser_option.AddArgument("--window-size=800,600")
        browser_option.AddArgument("--incognito")
        browser_option.AddArgument("--disable-infobars")
        browser_option.AddArgument("--disable-blink-features=AutomationControlled")

        Dim Proxy As New Proxy With {
        .Kind = ProxyKind.Manual,
        .IsAutoDetect = False,
        .HttpProxy = "p.webshare.io:9999",
        .SslProxy = "p.webshare.io:9999"}
        browser_option.Proxy = Proxy

        Dim driverService = ChromeDriverService.CreateDefaultService
        driverService.HideCommandPromptWindow = True
        Dim browser As New ChromeDriver(driverService, browser_option)

        browser.Navigate.GoToUrl("https://whoer.net")
        Dim CurrentIP As String
        Dim sHTML As String = browser.PageSource

        CurrentIP = Mid(sHTML, sHTML.IndexOf("<strong data-clipboard-target=" & Chr(34) & ".your-ip" & Chr(34) & " class=" & Chr(34) & "your-ip" & Chr(34) & ">") + 59, 20)
        CurrentIP = Regex.Match(CurrentIP, "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b").ToString
        Threading.Thread.Sleep(5000)

        Console.WriteLine("Changed IP: " & CurrentIP)
        Console.WriteLine("Current Loc: " & Get_TimeZone_GeoLocation(CurrentIP))

        Dim CurrentGeo() As String
        CurrentGeo = Get_TimeZone_GeoLocation(CurrentIP).Split(",")
        Dim ChromeGeoLocation As New Zu.ChromeDevTools.Emulation.SetGeolocationOverrideCommand
        ChromeGeoLocation.Latitude = CurrentGeo(0)
        ChromeGeoLocation.Longitude = CurrentGeo(1)
        ChromeGeoLocation.Accuracy = 1
        Dim ChromeTimeZone As New Zu.ChromeDevTools.Emulation.SetTimezoneOverrideCommand
        ChromeTimeZone.TimezoneId = CurrentGeo(2)



        browser.Navigate.GoToUrl("https://whoer.net")

    End Sub

    Function GetCurrentIP() As String
        Dim DetectAddress As String = "https://whoer.net"
        Dim CurrentIP As String

        Dim objHttpRequest As System.Net.HttpWebRequest
        Dim objHttpResponse As System.Net.HttpWebResponse
        Dim objProxy As New System.Net.WebProxy
        objHttpRequest = System.Net.HttpWebRequest.Create(DetectAddress)
        objHttpResponse = objHttpRequest.GetResponse
        Dim objStrmReader As New StreamReader(objHttpResponse.GetResponseStream)
        Dim sHTML As String
        sHTML = objStrmReader.ReadToEnd()

        CurrentIP = Mid(sHTML, sHTML.IndexOf("<strong data-clipboard-target=" & Chr(34) & ".your-ip" & Chr(34) & " class=" & Chr(34) & "your-ip" & Chr(34) & ">") + 59, 20)
        CurrentIP = Regex.Match(CurrentIP, "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b").ToString

        Return CurrentIP
    End Function

    Function Get_TimeZone_GeoLocation(ByVal CurrentIP As String) As String
        Dim DetectAddress As String = "http://ip-api.com/csv/" & CurrentIP
        Dim CurrentLocation As String

        Dim objHttpRequest As System.Net.HttpWebRequest
        Dim objHttpResponse As System.Net.HttpWebResponse
        objHttpRequest = System.Net.HttpWebRequest.Create(DetectAddress)
        objHttpResponse = objHttpRequest.GetResponse
        Dim objStrmReader As New StreamReader(objHttpResponse.GetResponseStream)
        Dim sHTML As String
        sHTML = objStrmReader.ReadToEnd()
        Dim sHTML_Item() As String
        sHTML_Item = sHTML.Split(",")
        CurrentLocation = sHTML_Item.Length
        Dim latitude, longitude, timezone As String
        latitude = sHTML_Item(7)
        longitude = sHTML_Item(8)
        timezone = sHTML_Item(9)
        CurrentLocation = latitude & "," & longitude & "," & timezone


        Return CurrentLocation

    End Function

    Function Random_UAC() As String
        Dim strUACs As String = IO.File.ReadAllText("UAC_List.txt")
        Dim strUAC_Split As String()
        strUAC_Split = strUACs.Split(vbCrLf)
        Dim n As Integer = strUAC_Split.Length
        Dim RandomUAC As Integer
        RandomUAC = Math.Ceiling(Rnd() * n) - 1
        'Console.WriteLine(RandomUAC & " - " & strUAC_Split(RandomUAC))

        Return strUAC_Split(RandomUAC)
    End Function

End Module
4

0 回答 0