使用 BeautifulSoup 用于 2 factor auth 后面的页面

Using BeautifulSoup for pages behind 2 factor auth

我正在为一个公司项目抓取一些数据,但所有这些都在我公司实施的 2 因素之后。 2 因素身份验证要求我从我的 phone/hardware 令牌中输入一个持续 6 秒的代码。由于各种原因,无法禁用此 2 因素。

有什么方法可以抓取这些信息吗?如果我现在 运行 它,BS 只是 returns 登录页面(在进入 2 因素页面之前我必须输入 username/pwd)。

如果需要,我也可以手动输入 2-factor 信息(虽然这必须每 12 小时重复一次,所以这种方法不是首选)。但是,我什至无法找到成功的原因,因为 BeautifulSoup 没有从预登录的浏览器中读取,并且 2 因素身份验证代码每 6 秒左右更改一次,并且每次登录(需要转到多个不同的页面,所以这基本上与手动将每个页面保存为 html 一样可行)。

正如评论者所指出的,这取决于您的网站如何设置和检查登录状态。除了您链接的答案中的方法外,您还应该尝试以下选项:

# using a session, and the cookies argument
s = requests.Session()
r = s.get('https://someurl', cookies={'somecookie': 'somecookievalue'})

# using a session, and http headers
s = requests.Session()
r = s.get('https://someurl', headers={'somekey': 'somevalue'})

在以上两种情况下,cookie都是一个键值对,表示为python字典。多个 cookie 可以作为多个 key/value 对传递。在某些情况下,必须直接传递身份验证凭据,如下所示:

s = requests.Session()
s.auth = ('user', 'pass')
s.get('https://someurl')

最后,可能需要其中两个或多个的某种组合。没有您的代码或有关该网站的更多信息,很难说更多。我希望这一切有所帮助。