使用javascript代码自动登录gmail

Posted

技术标签:

【中文标题】使用javascript代码自动登录gmail【英文标题】:Automatically login to gmail using javascript code 【发布时间】:2014-08-10 17:02:09 【问题描述】:

我是 javascript 编程的新手,我正在尝试编写一些可以自动填写并提交 Google 登录表单的 javascript 代码。当当前页面为https://accounts.google.com/ServiceLogin?sacu=1&continue=https%3A%2F%2Fwww.google.com.hk%2F%3Fgfe_rd%3Dcr%26ei%3DaaHnU563DIaL8Qeu-oG4Cw%26gws_rd%3Dssl&hl=en时,下面的代码可以正常工作

var inputs = document.getElementsByTagName('input'); 
for(var k=0;k<inputs.length;k++)  
    var input = inputs[k] ;
    var type = input.getAttribute('type');
    if(type == 'email')
        input.value = "abc@gmail.com";
    if(type == 'password')
    input.value = "1234";
 

var forms=document.getElementsByTagName('form'); 
forms[0].submit();

然后我尝试添加一些代码,以便如果浏览器当前在另一个网页上,程序将定向到谷歌并自动登录。这是我写的:

function autoSubmit()
    var inputs = document.getElementsByTagName('input'); 
    for(var k=0;k<inputs.length;k++)  
        var input = inputs[k] ;
        var type = input.getAttribute('type');
        if(type == 'email')
            input.value = "abc@gmail.com";
        if(type == 'password')
        input.value = "123";
     

    var forms=document.getElementsByTagName('form'); 
    forms[0].submit();


document.location.href="https://accounts.google.com/ServiceLogin?sacu=1&continue=https%3A%2F%2Fwww.google.com.hk%2F%3Fgfe_rd%3Dcr%26ei%3DaaHnU563DIaL8Qeu-oG4Cw%26gws_rd%3Dssl&hl=en";
window.onload=autoSubmit();

但是,这不起作用。似乎在完全加载 Google 网页之前执行了函数 autoSubmit()。谁能帮我解决这个问题?

【问题讨论】:

可能重复:***.com/questions/18048338/… 您是在 calling 函数,而不是仅将函数 reference 分配给事件……但即使您纠正了这一点,我也怀疑它会起作用: 改变位置会以你的处理程序不应该存在的方式“刷新”窗口对象。 您需要使用 tampermonkey 或 greasmonkey 在 gmail 上运行您自己的脚本。 或许您可以研究一下 Google API? 【参考方案1】:

有两个问题:

首先,autuSubmit 函数被提前调用是正确的:

window.onload=autoSubmit();

你正在做的是调用autoSubmit当时并将其值分配给window.onload

你的意思是这样的:

window.onload=autoSubmit;

请注意,我删除了括号 ()。这会分配一个函数引用。

但是...

这仍然不会做你希望它做的事情。

当您更改页面时——location.href(应该是window.location.href,顺便说一句),你加载了一个新页面并且当前信息——所有的 JavaScript、window.onload 处理程序和所有东西——被抛出离开。

简而言之,使用标准编程无法实现这一点。

如果您想为自己制作一些东西,但又不想让每个人都可以使用,您可以使用userscript,它可以在 Firefox、Chrome、Safari 和 Opera 下运行。用户脚本允许您添加额外的代码以在网页上运行,但同样,它只会为您运行。

【讨论】:

以上是关于使用javascript代码自动登录gmail的主要内容,如果未能解决你的问题,请参考以下文章

使用Python自动登录Gmail

Gmail:无法让您登录(自动)

自动化gmail登录[在oAuth期间]被用户验证阻止

如何以编程方式确认Gmail自动转发验证?

javascript 使用javascript登录Gmail

Greasemonkey:如何自动填写登录表单?