我在Chrome中使用Tampermonkey执行以下代码,我用它来登录digitalocean.com。
setTimeout (function() {
document.querySelector("input[type=submit]").click();
}, 3000);
出于某种原因,这段代码有时会起作用,有时它并不起作用:也就是说,有时我会登录,有时(大多数情况下)我得到DigitalOcean的 404 网页。
我的登录详细信息已保存在本地存储空间中,并显示在表单上。
原则上,可以通过注册到DigitalOcean,安装Tampermonkey并使用匹配执行代码来重现此问题:
https://cloud.digitalocean.com/login*
可能缺少某些东西以确保机器眼中的人类行为?
答案 0 :(得分:0)
好的,需要一些挖掘,但我知道发生了什么。
404
处出现https://cloud.digitalocean.com/sessions
错误。我编辑脚本检查页面是否从缓存加载,并刷新页面而不是触发click
事件:
if (window.performance.navigation.type === 2)
{
location.reload();
} else {
document.querySelector("input[type=submit]").click();
}
我建议您报告他们的登录页面似乎偶尔会收到错误的身份验证令牌的事实,因为可以通过在新登录的“登录”按钮上单击(使用鼠标)来间歇性地再现该问题页面副本。
(我不会提到剧本,否则他们会责备它,然后你就会失去运气。)
作为一个止损,直到他们解决问题,您可以制作一个匹配https://cloud.digitalocean.com/sessions
的新脚本(它会将我发送到该页面,但如果需要,则添加*
)如果您来自登录页面,则会收到404
错误:
if (document.referrer.startsWith("https://cloud.digitalocean.com/login") && document.title.endsWith(" (404)"))
{
history.back();
}
请注意document.title.endsWith(" (404)")
仅适用,因为404
页面<title>
标记的内容以(404)
结尾。
答案 1 :(得分:0)
这似乎是Tampermonkey中的一个错误,因为在Greasemonkey中没有发生报告的行为。
无论如何,3D1T0R的回答提供了一个有趣的解决方法,当前的情况(如果可能的话会大拇指)。