使用 JavaScript 登录 Netflix 网站

Logging in to the Netflix website using JavaScript

我正在尝试使用 QWebEngine 在 Qt 中为 Netflix 网页编写一个包装器,以便我可以使用我的遥控器进行导航。对于那些不知道的人,甚至无法使用箭头键导航 Netflix 网站...

所以,无论如何,我已经使用 QWebChannel 向网页中注入了一些 JavaScript 代码,并且可以(至少在视觉上)修改相关元素:

document.getElementsByName("email")[0].value = "%1";
document.getElementsByName("password")[0].value = "%2";
document.getElementsByClassName("btn login-button btn-submit btn-small")[0].click();

这确实有效(我可以看到字段中填满了我为 %1%2 提供的内容,并且以编程方式按下按钮),除了一个关键问题:这导致输入表单下方的消息告诉我 "Please enter a valid email." 和 "Your password must contain between 4 and 60 characters."。这些以某种方式告诉我,仅设置 HTML 元素的值与我手动输入值的效果不同。有人可以帮我弄清楚为什么这不起作用,以及如何让它起作用吗?我想限制自己使用简单的 JavaScript,这似乎是一个足够简单的任务,无需例如jQuery 或其他一些 Javascript 库。

我知道这是处理整个 Netflix-on-a-HTPC 事情的糟糕方法,但我不想深入挖掘,例如。 Flix2Kodi Python 弄清楚他们在做什么(在我看来,这比我想要的最终结果更容易受到破坏)。

电子邮件的输入字段使用某种 HTML5 和 ReactJS 验证组合。
然而,似乎 ReactJS 验证无法处理动态值更改,所以我试图找到一种方法来停用它,我没有直接这样做,但我猜它必须向表单添加某种事件处理程序所以我来了完成这个:

var validatingForm = document.getElementsByClassName("simple-login-form")[0];
var nonValidatingForm = document.getElementsByClassName("simple-login-form")[0].cloneNode(true);
validatingForm.parentNode.replaceChild(nonValidatingForm, validatingForm);

它摆脱了所有事件处理程序,因此摆脱了 ReactJS 的验证。现在您可以使用您的代码设置您的值:

document.getElementsByName("email")[0].value = "%1";
document.getElementsByClassName("btn login-button btn-submit btn-small")[0].click();

请注意 HTML5 仍在验证输入,因此您必须提供电子邮件地址,如果您也想摆脱它,请将输入类型设置为 text 更改值之前:

document.getElementsByName("email")[0].setAttribute("type", "text");

但是,单击按钮后的下一页要求输入密码,因此您必须在此处提供密码,因为我没有找到解决此问题的方法。

Buuuuuttt 你能不能在浏览器中保存密码,让它自动填充并只触发点击事件?