我使用Python(2.7)和Selenium(3.4.3)通过geckodriver(0.19.0)驱动Firefox(52.2.0 ESR),在CentOS 7机器上自动执行一个过程。
我需要完全无人值守的自动化操作,通过用户凭据;不允许存储和非法侵入。
其中一个戏剧性的现象是,进程所需的内部网站位于活动目录域内,而运行“我的自动化”的计算机却不在。我不需要验证用户,只需以不需要人与人交互的方式将凭据传递到网站,也不需要让人在机器上成为本地用户。在
我试过各种组合:
其中一些似乎只在IE上工作,我无法访问。
我查过图书馆来处理这些,但都没有用。在
我可以将库添加到python中,并且我有sudo访问机器的权限-不能接触身份验证,所以广告集成是不可能的。在
我如何给这个广告网站一个任意用户的凭据,使他们的凭据不发生本地存储,而无需用户交互?在
谢谢你
编辑
我认为类似于一个代理,它可以对用户进行身份验证,然后保留对selenium的身份验证来完成它的工作。。。 是否有一个简单的LDAP/AD代理?在
编辑2
也许有一个非常简单的方法来说明这一点,我希望传递用户凭据并防止身份验证弹出窗口发生。在
找到的解决方案:
我需要使用浏览器扩展。 我的解决方案是为chromium构建的,但是对于Firefox和也许是edge,它的端口应该几乎没有变化。在
首先,首先,您需要2个API可用于您的浏览器:
webRequest.onAuthRequired
-Chrome&;Firefoxruntime.nativeMessaging
-Chrome&;Firefox虽然这两个浏览器API非常相似,但它们确实有一些显著的区别——比如Chrome的实现缺少Promises。在
如果将本机消息传递主机设置为发送格式正确的JSON字符串,则只需轮询一次。这意味着您可以使用对
runtime.sendNativeMessage()
的单个调用,并确保您的凭据是可削减的。双关语。在接下来,我们需要看看我们应该如何处理
webRequest.onAuthRequired
事件。在因为我在Chromium工作,所以我需要使用promise-less-chromeapi。在
变化:
我将调用我的函数
provideCredentials
,因为我是一个大的stealy窃取者,并使用了来自this源代码的示例。寻找异步版本。在示例代码从
^{pr2}$storage.local
获取凭据。。。在我们不想那样。不。在
我们希望从对
sendNativeMessage
的单个调用中获取凭据,因此我们将更改这一行。在这就够了。说真的。只要你的主人表现得很好,这就是最大的秘密。我甚至不会告诉你我花了多长时间才找到它!在
链接:
我的问题和有用的链接:
所以这是一个非常重要的问题。在
我还没有实现这个解决方案,但我知道如何实现。。。在
向扩展传递值是第一步-这可以在Chrome和Firefox中完成。查看版本以确保所需的API nativeMessaging在您的版本中确实存在。因为这个原因,我不得不改用铬。在
或者,可以使用存储API将值首先放入浏览器存储中。[编辑:我走这条路不是出于安全考虑]
下一步是使用WebRequestAPI中的onAuthRequired事件。在事件上设置一个侦听器并传入所需的值。在
注意事项:我已经为nativeMessaging API解决方案构建了扩展本身的所有内容,但是让脚本识别数据仍然存在问题。这几乎可以肯定,我的JavaScript技能与使这些api更有意义所需的神秘知识相冲突。。。 我还没有尝试过存储方法,因为它不太安全(在我看来),但它似乎更简单。在
相关问题 更多 >
编程相关推荐