Python端口扫描全部关闭

Python端口扫描全部关闭,python,multithreading,port,scanning,Python,Multithreading,Port,Scanning,我一直在学习一些关于python端口扫描的教程(这使用线程),不管我做什么,都会说所有端口都是关闭的。我知道这是不可能的,因为80端口(web)对这个网站是开放的,我找到的一个在线工具说22和80端口是开放的。我该怎么办 import socket import threading from queue import Queue import time print_lock = threading.Lock() target = 'www.pythonprogramming.net' de

我一直在学习一些关于python端口扫描的教程(这使用线程),不管我做什么,都会说所有端口都是关闭的。我知道这是不可能的,因为80端口(web)对这个网站是开放的,我找到的一个在线工具说22和80端口是开放的。我该怎么办

import socket
import threading
from queue import Queue
import time

print_lock = threading.Lock()

target = 'www.pythonprogramming.net'

def portscan(port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        con = s.connect(server, port)
        with print_lock:
            print("port",port,"is open")
        con.close()
    except:
        pass
        with print_lock:
            print("port",port,"is closed")

def threader():
    while True:
        worker = q.get()
        portscan(worker)
        q.task_done()

q = Queue()

for  i in range(30):
    t = threading.Thread(target = threader)
    t.deamon = True
    t.start()

for worker in range(1,101):
    q.put(worker)

q.join()

您应该捕获异常并读取它:

except Exception as e:
    with print_lock:
        print("port",port,"is closed due to " + str(e))
使用它,您可以找到错误。您的错误是“未定义服务器”

connect
方法接受元组,所以您应该这样做

con=s.connect((目标,端口))


而且它有效

在portscan函数中,“服务器”有什么值?con=s.connect(服务器,端口)