Python 3路由器访问

2024-06-06 15:06:02 发布

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

我一直在使用下面的脚本从我们的路由器抓取PIN。它经常被更改,所以我决定使用一个脚本,这样比从浏览器访问路由器更容易。在

脚本如下:

from requests.auth import HTTPBasicAuth
import requests
import re

while True:
    try:
        response = requests.get('http://192.168.2.1/settings.html', 
        auth=HTTPBasicAuth('username', 'password'))
        html = response.content
        m = re.findall(b'var routerpin\s+=\s+(.*)', html)
        break
    except:
        m = None

print(m)

我遇到的问题是第一次运行脚本时,变量“m”返回一个空列表。这并不是一个例外。我认为通过使用try-except循环并使用None或empty集合作为异常将允许它工作。在

当脚本运行一次时返回m=[] 在此之后,脚本返回正确的数据。我知道这是由于第一次运行没有通过路由器认证,但我不确定如何处理它运行两次并获取数据。在

可能是一个非常简单的答案,但任何帮助都非常感谢。在


Tags: fromimportre脚本noneauthresponsehtml
1条回答
网友
1楼 · 发布于 2024-06-06 15:06:02

尝试使用会话对象来管理经过身份验证的会话:

s = requests.Session()
s.auth = ('username', 'password')
auth = s.post('http://192.168.2.1')
response = s.get('http://192.168.2.1/settings.html')
html = response.content
# etc

相关问题 更多 >