将URL作为命令行参数,我得到一个“socket.gaierro:[Errno 8]nodename或servname已提供,或未知”

2024-10-04 01:36:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试构建一个目录暴力强制工具(对编程来说还是比较新的)。我使用URL和wordlist作为命令行参数,但在运行以下代码时:

import sys
import socket
import requests as req

rhost = sys.argv[1]
wordlist = sys.argv[2]

def parse_wordlist(wordlist):
    with open(wordlist, encoding="ISO-8859-1") as file:
        directories = file.read().strip().split("\n")
    return directories

directories = parse_wordlist(wordlist)

s = socket.socket()
s.connect((rhost, 80))
for directory in directories:
    status = req.get(f"{rhost}/{directory}").status_code
    if status == 200:
        print(f"Directory found: {rhost}/{directory}")
s.close()

print("Scan complete")

我得到以下错误:socket.gaierro:[Errno 8]提供了nodename或servname,或者未知

当我试图找到这方面的信息时,我发现大多数答案都是关于localhost的,我认为这不适用于我(尽管我可能完全错了)。此外,我也找不到任何通过命令行定义主机URL变量的地址


Tags: 命令行importurlparseasstatussyssocket
1条回答
网友
1楼 · 发布于 2024-10-04 01:36:10

您不需要打开socketreq.get会给你想要的。 您可以使用try except增强代码:

import sys
import requests as req

rhost = sys.argv[1]
wordlist = sys.argv[2]

def parse_wordlist(wordlist):
    with open(wordlist, encoding="ISO-8859-1") as file:
        directories = file.read().strip().split("\n")
    return directories

directories = parse_wordlist(wordlist)

for directory in directories:
    try:
        status = req.get(f"{rhost}/{directory}").status_code
        if status == 200:
            print(f"Directory found: {rhost}/{directory}")
    except:
        continue

print("Scan complete")

相关问题 更多 >