欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python檢查端口是否打開的七種方法總結(jié)

 更新時間:2023年12月12日 09:47:56   作者:小龍在山東  
在信息安全領(lǐng)域,端口掃描是一項常見的技術(shù),用于逐個檢測目標主機上的端口是否開放,這篇文章主要給大家介紹了關(guān)于Python檢查端口是否打開的七種方法總結(jié),需要的朋友可以參考下

sock.connect_ex

使用socket模塊的connect_ex來判斷端口是否打開,如果返回值是0表示連接成功,端口打開,否則端口關(guān)閉。

import socket

def check_port(ip, port):  
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
    sock.settimeout(5)  
  
    try:  
        result = sock.connect_ex((ip, port))  
        if result == 0:  
            return True
        else:  
            return False
    except Exception as e:  
        print(f"錯誤: {str(e)}")  
    finally:  
        sock.close()
        
host = 'localhost'
port = 80
if check_port(host, port):
    print(f'The port {port} on {host} is open.')
else:
    print(f'The port {port} on {host} is closed.')

sock.connect

使用socket模塊的connect來判斷端口是否打開,如果未發(fā)生異常表示連接成功,端口打開,否則端口關(guān)閉。

import socket

def check_port(host, port):
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(1)
        sock.connect((host, port))
        sock.close()
        return True
    except:
        return False
    finally:  
        sock.close()

telnet命令

調(diào)用telnet命令來判斷端口是否打開。

使用telnet命令:在大多數(shù)操作系統(tǒng)中,telnet命令可以用于測試端口是否開放。你可以在命令行中輸入"telnet <IP地址> <端口>",如果端口是開放的,則telnet會連接成功并返回一些信息。否則,它將返回一個錯誤消息。

import os  
  
def check_port(ip, port):  
    result = os.system(f"telnet {ip} {port} > /dev/null 2>&1")  
    if result == 0:  
        print(f"端口 {port} 是開放的")  
    else:  
        print(f"端口 {port} 是關(guān)閉的")

nc命令

使用nc命令(也稱為netcat):nc命令是一個強大的工具,可以用于測試端口是否開放。你可以在命令行中輸入"nc -zv <IP地址> <端口>",如果端口是開放的,則nc會連接成功并返回一些信息。否則,它將返回一個錯誤消息。

import os  
  
def check_port(ip, port):  
    result = os.system(f"nc -zv {ip} {port} > /dev/null 2>&1")  
    if result == 0:  
        print(f"端口 {port} 是開放的")  
    else:  
        print(f"端口 {port} 是關(guān)閉的")

ping命令

使用ping命令:ping命令可以用于測試網(wǎng)絡(luò)連接是否暢通,也可以用于檢查端口是否開放。在命令行中輸入"ping <IP地址> -n <端口>",如果端口是開放的,則ping會返回一些信息。否則,它將返回一個錯誤消息。

import os  
  
def check_port(ip, port):  
    result = os.system(f"ping {ip} -n {port} > /dev/null 2>&1")  
    if result == 0:  
        print(f"端口 {port} 是開放的")  
    else:  
        print(f"端口 {port} 是關(guān)閉的")

注意:如果目標服務(wù)器禁用ping,就無法判斷出來了。

requests檢查http端口

requests庫是Python的一個HTTP庫,可以用來發(fā)送所有類型的HTTP請求,包括GET、POST、PUT、DELETE等。它也可以用來處理cookies、會話、重定向等。

要檢查一個端口是否開放,我們通常會使用requests庫來嘗試向該端口發(fā)送HTTP請求,并查看是否能夠成功連接。以下是一個簡單的示例:

import requests  
  
def check_port(ip, port):  
    try:  
        response = requests.get(f"http://{ip}:{port}")  
        if response.status_code == 200:  
            print(f"端口 {port} 是開放的")  
        else:  
            print(f"端口 {port} 是關(guān)閉的")  
    except requests.exceptions.ConnectionError:  
        print(f"端口 {port} 是關(guān)閉的")

在上述代碼中,我們使用requests.get方法向指定的IP地址和端口發(fā)送GET請求。如果請求成功,并且返回的狀態(tài)碼為200,則表示該端口是開放的。如果發(fā)生requests.exceptions.ConnectionError異常,則表示該端口是關(guān)閉的。requests檢查端口方法僅適用于HTTP和HTTPS端口。

Scapy

Scapy是一個強大的Python庫,用于創(chuàng)建、解析、發(fā)送、接收并解析網(wǎng)絡(luò)數(shù)據(jù)包。使用Scapy來檢查端口是否開放。

from scapy.all import *  
  
def check_port(ip, port):  
    # 構(gòu)造一個ICMP數(shù)據(jù)包,并發(fā)送到目標IP地址和端口  
    packet = IP(dst=ip) / ICMP() / Raw(load=str(port))  
    # 發(fā)送數(shù)據(jù)包并獲取響應(yīng)  
    response = sr1(packet, timeout=1)  
    # 檢查響應(yīng)是否為ICMP錯誤類型  
    if response is None or response.type != ICMP.DEST_UNREACH:  
        print(f"端口 {port} 是開放的")  
    else:  
        print(f"端口 {port} 是關(guān)閉的")  
  
# 測試函數(shù)  
check_port('127.0.0.1', 80)

我們使用Scapy構(gòu)造了一個ICMP數(shù)據(jù)包,并將目標端口作為負載包含在其中。然后,我們發(fā)送該數(shù)據(jù)包并等待響應(yīng)。如果響應(yīng)是ICMP錯誤類型(目的地不可達),則表示端口是關(guān)閉的。否則,表示端口是開放的。這種方法只適用于ICMP端口掃描。對于其他類型的端口掃描(如TCP或UDP端口掃描),需要使用不同的協(xié)議和字段。

總結(jié)

到此這篇關(guān)于Python檢查端口是否打開的七種方法的文章就介紹到這了,更多相關(guān)Python檢查端口是否打開內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pandas如何計算移動平均值

    pandas如何計算移動平均值

    在處理金融數(shù)據(jù)分析時,常需計算移動平均值。遇到數(shù)據(jù)不足導(dǎo)致結(jié)果為NAN問題,可使用pandas中rolling函數(shù)的min_periods參數(shù)。設(shè)置min_periods=1即可解決,它允許窗口中的非空觀測值少于窗口大小時也能計算均值,確保數(shù)據(jù)不足時也能得出結(jié)果
    2024-09-09
  • Python編寫可視化界面的詳細教程(Python+PyCharm+PyQt)

    Python編寫可視化界面的詳細教程(Python+PyCharm+PyQt)

    最近開始學(xué)習Python,但只限于看理論,編幾行代碼,覺得沒有意思,就想能不能用Python編寫可視化的界面,遂查找了相關(guān)資料,發(fā)現(xiàn)了PyQt,所以本文介紹了Python+PyCharm+PyQt編寫可視化界面的詳細教程,需要的朋友可以參考下
    2024-07-07
  • 基于Python實現(xiàn)簡單學(xué)生管理系統(tǒng)

    基于Python實現(xiàn)簡單學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細介紹了基于Python實現(xiàn)簡單學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • python實現(xiàn)word/excel/ppt批量轉(zhuǎn)pdf的示例代碼

    python實現(xiàn)word/excel/ppt批量轉(zhuǎn)pdf的示例代碼

    這篇文章主要為大家詳細介紹了如何利用python實現(xiàn)word、excel、ppt批量轉(zhuǎn)pdf文件,文中的示例代碼講解詳細,有需要的小伙伴可以參考下
    2023-09-09
  • Python3中的指針你了解嗎

    Python3中的指針你了解嗎

    Python這個編程語言雖然沒有指針類型,但是Python中的可變參量也可以像指針一樣,改變一個數(shù)值之后,所有指向該數(shù)值的可變參量都會隨之而改變,這篇文章主要介紹了Python3中的“指針”,需要的朋友可以參考下
    2024-02-02
  • 淺談python日志的配置文件路徑問題

    淺談python日志的配置文件路徑問題

    下面小編就為大家分享一篇淺談python日志的配置文件路徑問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • OpenCV凸包檢測和凸缺陷學(xué)習示例

    OpenCV凸包檢測和凸缺陷學(xué)習示例

    這篇文章主要為大家介紹了OpenCV凸包檢測和凸缺陷學(xué)習示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 淺談Python數(shù)據(jù)處理csv的應(yīng)用小結(jié)

    淺談Python數(shù)據(jù)處理csv的應(yīng)用小結(jié)

    這篇文章主要介紹了Python數(shù)據(jù)處理csv的簡單應(yīng)用,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • 深入淺析Python 函數(shù)注解與匿名函數(shù)

    深入淺析Python 函數(shù)注解與匿名函數(shù)

    這篇文章主要介紹了Python 函數(shù)注解與匿名函數(shù)的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 計算機二級python學(xué)習教程(3) python語言基本數(shù)據(jù)類型

    計算機二級python學(xué)習教程(3) python語言基本數(shù)據(jù)類型

    這篇文章主要為大家詳細介紹了計算機二級python學(xué)習教程的第3篇,python語言基本數(shù)據(jù)類型,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05

最新評論