我正在编写自己的 Python 脚本,使用 shodan 查找打开的摄像机。
从 API 中,我有大约 10 个通过 rtsp 工作的 URL(大概),并且不需要身份验证。
但是,通常来说,shodan 的 API 并不总是提供最新信息,并且 URL 需要额外的验证来进行身份验证。
代码摘录本身:
def some_func(ip):
cap = cv2.VideoCapture(f"rtsp://{ip}/").isOpened() # В ip включен порт
if not cap:
print("CLOSED:", ip)
else:
print("OPENED:", ip)
如果流打开(即不需要身份验证)则返回True,否则返回False。
问题的本质是我尝试通过python中的opencv库通过该方法来做到这一点VideoCapture- 如果流打开,那么在一小段时间后执行代码,但是如果rtsp流关闭(即,404、403等错误。),然后脚本就站得很紧(2分钟后可能会挂下来)。
这是一个示例输出:
[rtsp @ 000002cccd9d3f80] method DESCRIBE failed: 404 Stream Not Found
如果这个方法有一个参数,我会同意这个timeout,但我没有找到一个!
也许有一些参数负责timeoutin VideoCapture,或者任何其他具有类似超时方法的库?