Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webscraping需要使用Javascript警报进行身份验证的内部站点_Javascript_Python_Selenium_Authentication_Beautifulsoup - Fatal编程技术网

Webscraping需要使用Javascript警报进行身份验证的内部站点

Webscraping需要使用Javascript警报进行身份验证的内部站点,javascript,python,selenium,authentication,beautifulsoup,Javascript,Python,Selenium,Authentication,Beautifulsoup,我一直在尝试从公司内部网站(出于安全目的,url被排除在外)中获取一些原始XML数据。我目前正在使用selenium和beautifulsoup来实现这一点(但我对任何其他选项都持开放态度)。当手动访问该站点时,我会收到一个javascript浏览器提示,提示输入用户名和密码(见图)。我自动验证凭据的尝试如下(未通过身份验证): 但是,当脚本运行时,我仍然必须在chromedriver控制的浏览窗口中手动输入用户名和密码,然后程序的其余部分按预期运行 有没有办法避免手动输入?我还尝试了drive

我一直在尝试从公司内部网站(出于安全目的,url被排除在外)中获取一些原始XML数据。我目前正在使用selenium和beautifulsoup来实现这一点(但我对任何其他选项都持开放态度)。当手动访问该站点时,我会收到一个javascript浏览器提示,提示输入用户名和密码(见图)。我自动验证凭据的尝试如下(未通过身份验证):

但是,当脚本运行时,我仍然必须在chromedriver控制的浏览窗口中手动输入用户名和密码,然后程序的其余部分按预期运行

有没有办法避免手动输入?我还尝试了driver.alert解决方案,并将密钥和凭据发送到浏览器,但均无效。。(我知道这可能很困难,因为在网络之外无法访问该网站,请见谅!)

编辑:我应该提到这个方法在几周前是有效的,但是在chrome更新之后就不再有效了


您的登录过程可能返回某种访问令牌,响应正文中的值或带有令牌的头,可能是
授权
头或
设置Cookie

在大多数情况下,您将需要在每个请求中发送该令牌,作为授权标头、主体参数或页面所期望的任何内容

您的工作是通过在进行身份验证时检查服务器的响应来查找该令牌,将其存储在某个位置,并在每次向服务器发出页面请求时将其发送回


如何将其发回取决于相关服务器的要求。它可能需要一个请求正文参数或一个标题,这是两种最可能的情况。

如果您从不同的角度来解决问题,该怎么办?为什么要刮内部站点?难道不可能从信息来源的其他地方获得数据吗?我希望:P不幸的是,我们正处于时间紧迫期,无法访问API。。。这里有些事情变得比实际情况更困难。请使用外部工具(如autoit(如果是windows))或使用代理插入凭据,或使用扩展来设置凭据,或启动已设置凭据的chrome配置文件,或在页面中执行以设置凭据。可能重复
def main():
    #gets specified list of direct reports
    # username:password@
    url ="http://{username}:{password}@myURL.com"
    driver.get(url)
    html = driver.page_source
    soup = BeautifulSoup(html, "lxml")
    # parsing logic follows ...