使用BeautifulSoup为2因素认证后的页面提供服务

问题描述 投票:1回答:1

我正在为公司的一个项目收集一些数据,但所有的数据都是在我公司的2因子后面。2因素认证需要我从手机硬件令牌中输入一个持续6秒的代码。由于种种原因,这个2因子不能被禁用。

我有什么办法可以刮取这些信息吗?如果我现在运行它,BS只是返回登录页面(在那里我必须在被带到2因子页面之前输入usernamepwd)。

如果需要的话,我也可以手动输入2因素信息(不过每12小时要重复一次,所以不喜欢这种方法)。但是,我都没有找到成功的方法,因为BeautifulSoup不会从预先登录的浏览器中读取信息,而且2因子的验证码每隔6秒左右就会变化一次,而且每次登录都会有变化(需要进入多个不同的页面,所以这种方法基本和手动保存每个页面为html一样可行)。

python web-scraping beautifulsoup two-factor-authentication
1个回答
0
投票

正如评论者所言,这要看你的网站是如何设置和检查登录状态的。除了你链接的答案中的方法外,你还应该尝试以下选项。

# 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可以作为多个键值对传递。在某些情况下,必须直接传递auth凭证,比如这样。

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

最后,可能需要两个或两个以上的组合。如果没有你的代码或者网站的更多信息,很难说得更多。希望这些能帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.