在python中,如何只需几行代码就可以轻松获得代理的延迟?

在python中,如何只需几行代码就可以轻松获得代理的延迟?,python,python-3.x,proxy,latency,Python,Python 3.x,Proxy,Latency,我在我的一个脚本中制作了一些东西,应该能够清除我所有缓慢的代理。代理存储在每行一个名为proxies.txt的文件中。我希望能够使用变量指定最大延迟(以毫秒为单位)。我在这里看到了一个类似的问题,但没有得到回答。如果有办法,请让我知道。这不是您要求的100%,这将根据代理是否及时响应返回真或假 def ping(host): param = '-n' if platform.system().lower() == 'windows' else '-c' command = [

我在我的一个脚本中制作了一些东西,应该能够清除我所有缓慢的代理。代理存储在每行一个名为proxies.txt的文件中。我希望能够使用变量指定最大延迟(以毫秒为单位)。我在这里看到了一个类似的问题,但没有得到回答。如果有办法,请让我知道。

这不是您要求的100%,这将根据代理是否及时响应返回真或假

def ping(host):

    param = '-n' if platform.system().lower() == 'windows' else '-c'

    command = ['ping', param, '1', '-w', 250, '-n', '1', host]
    return subprocess.call(command, stdout=subprocess.PIPE) == 0
如果在250毫秒内响应,则返回布尔值(true或false)。我确信,修改这个以返回那个以返回正确的值是很容易的。然后,您需要做的就是为文件中的每一行将其放入for循环中。此外,您还必须从代理测试中去掉端口号和分号,然后重新附加它,正如我在下面的代码中所做的: 如果您想使用它,您必须更改它,因为它来自我编写的项目。

def check_proxies(filename):
    filename = str(filename)
    f = open(filename)
    lines = 0
    for _ in f:
        lines = lines + 1
    f.close()

    EstimatedTime = lines * config.Ping_Timeout
    print(f"{bcolors.Blue}Checking proxies... this will take at max {bcolors.OKGREEN}{EstimatedTime / 1000}{bcolors.Blue} seconds{bcolors.ENDC}")

    with open(filename) as f:
        workingProxies = []
        LineNum = 0
        for line in f.readlines():
            line = line.strip("\n").strip('\r')
            line = line.split(":")
            line_port = line[1]
            line_ip = line[0]
            if LineNum == 50:
                if config.extras.Proxy_Joke.Proxy_Joke_Extra:
                    Info.print_dad_joke()
                else:
                    pass
            LineNum = LineNum + 1
            if ping(line_ip):
                workingProxies = workingProxies + [f"{line_ip}:{line_port}"]
            else:
                pass
        if len(workingProxies) == 0:
            print("Error, no working proxies were detected, are you connected to the internet?")
    return workingProxies


def get_file_lines():
    InputProxies = 0
    with open(config.Proxy_File) as G:
        for _ in G.readlines():
            InputProxies = InputProxies + 1
    return InputProxies

我不知道该如何去做你想做的事情,但在我参与的一个项目中,这对我很有用。

你在哪个平台上?如果您在Linux/Unix上,可以使用
curl
,但是这些是HTTP/HTTPS代理吗?您目前是否有在Python中使用代理的方法?是什么阻止了你测量对某个URL的平均ping时间,比如在你链接的答案中?我能够很好地实现它,但是当它试图执行命令时,它垃圾邮件了这类东西:"ping:62.75.203.118:3838:名称或服务未知ping:195.154.237.156:3838:名称或服务未知ping:79.101.98.2:53281:名称或服务未知ping:85.25.15.211:3838:名称或服务未知ping:51.15.149.176:3838:名称或服务未知ping:46.255.99.7:41258:名称或服务未知ping:182.253.169.40:8080:名称或服务未知ping:服务未知ping:212.83.157.111:3838:名称或服务未知“如果这有帮助的话,我在debian 10上。我需要更多的上下文来回答这个问题,但听起来问题是当你ping每个代理时,你需要剥离端口。根据你给我看的内容,我无法判断你是否这样做了。但是在”选中_proxies“它抓取完整的代理(例如:12.34.567.890:1234)并在冒号处拆分它,冒号为[“12.34.567.890”,“1234”,然后使用ping函数ping“line[0]”如果返回true,则工作代理为
line[0]+:“+line[1]
,这将是(12.34.567.890:1234)我使用windows,但我很确定你不能用Debian上的端口ping IP。@Supergamer5465如果这没有多大意义,那也是因为我已经起床一个小时了,如果你需要更多帮助,请回答这个问题,我不会睡着。