自动网站登录开启Chrome
Automatic website login opening Chrome
有什么方法可以在 Chrome 打开后立即从 Chrome 扩展程序打开标签页?我的学校有一个访问点,每次打开计算机使用互联网时都必须登录,我想做一个自动登录的扩展,但我不知道如何制作脚本 运行 一打开 Chrome.
编辑:登录页面不是我打开浏览器时打开的页面:我必须手动转到某个站点让系统提示我登录,否则它只会告诉我我没有连接到互联网。
准备
您需要做的是:
- 使用所需的
manifest.json
文件创建基本 "empty" 扩展。
- 声明
"background"
field, which will run a backgrond.js
script to open the login page when Chrome is opened, using the chrome.tabs
API。然后您需要为此添加权限。
- 在您的清单中声明
"content_scripts"
field,并设置一个 contnet.js
脚本来匹配打开并允许您登录的登录 URL。
- 将在创建的选项卡中执行的脚本 (
content.js
) 将包含自动填写用户名和密码字段并单击登录按钮的代码。
实施
创建一个基本扩展,它将包含三个文件:
manifest.json
: 扩展的清单
background.js
: 扩展的后台脚本
content.js
: 你的内容脚本
在您的清单中写下基本字段,如:版本、名称、背景等。然后添加 "content_scripts"
字段来声明您的脚本。您的 manifest.json
应该如下所示:
{
"manifest_version": 2,
"name": "Some name",
"version": "0",
"permissions": [
"tabs"
],
"background": {
"scripts": ["background.js"]
},
"content_scripts": {
{
"matches": ["http://your-login-page-url..."],
"js": "/content.js"
}
}
}
在您的 background.js
脚本中,您将在扩展程序启动时立即打开一个选项卡(这也是 Chrome 打开时),如下所示:
chrome.tabs.create({url: "http://your-login-page-url..."});
// this URL ---------------^^ should be the same as the one that matches the content script in the manifest.json
将URL换成真实的,检查打开的标签页是否正确。
现在,在您的 content.js
脚本中,该脚本将加载到刚刚创建的选项卡中,您将获得正确的字段并填写它们,然后单击登录按钮。
例如,如果登录页面如下所示:
...
<span>User:</span><input id="username" type="text"/>
<span>Password:</span><input id="password" type="password"/>
<button id="login-btn">Log in</button>
...
然后在您的 content.js
脚本中您将执行:
document.getElementById('username').value = 'yourusername';
document.getElementById('password').value = 'yourpassword';
document.getElementById('login-btn').click();
显然,您必须用真实凭据替换 yourusername
和 yourpassowrd
。
这就是全部,非常简单:只需创建一个选项卡并在其中注入一个内容脚本。此扩展现在会在您打开 Chrome!
时立即为您登录
您可以在 url 右侧为登录页面创建带有 Background Page. The background page would just need to open a new tab 的扩展。您的清单将为后台页面指定一个脚本
"background": {
"scripts": ["background.js"]
}
并且该脚本将只包含这一行 JavaScript:
chrome.tabs.create({ url: 'the login page url' });
之所以可行,是因为浏览器启动时会加载背景页面并将其保存在内存中。因此,当您打开浏览器时,js 文件只执行一次。更新扩展时可以重新加载后台页面,但由于这将是一个私有扩展,因此您不必担心这一点,这只会使开发更容易。
有什么方法可以在 Chrome 打开后立即从 Chrome 扩展程序打开标签页?我的学校有一个访问点,每次打开计算机使用互联网时都必须登录,我想做一个自动登录的扩展,但我不知道如何制作脚本 运行 一打开 Chrome.
编辑:登录页面不是我打开浏览器时打开的页面:我必须手动转到某个站点让系统提示我登录,否则它只会告诉我我没有连接到互联网。
准备
您需要做的是:
- 使用所需的
manifest.json
文件创建基本 "empty" 扩展。 - 声明
"background"
field, which will run abackgrond.js
script to open the login page when Chrome is opened, using thechrome.tabs
API。然后您需要为此添加权限。 - 在您的清单中声明
"content_scripts"
field,并设置一个contnet.js
脚本来匹配打开并允许您登录的登录 URL。 - 将在创建的选项卡中执行的脚本 (
content.js
) 将包含自动填写用户名和密码字段并单击登录按钮的代码。
实施
创建一个基本扩展,它将包含三个文件:
manifest.json
: 扩展的清单background.js
: 扩展的后台脚本content.js
: 你的内容脚本
在您的清单中写下基本字段,如:版本、名称、背景等。然后添加
"content_scripts"
字段来声明您的脚本。您的manifest.json
应该如下所示:{ "manifest_version": 2, "name": "Some name", "version": "0", "permissions": [ "tabs" ], "background": { "scripts": ["background.js"] }, "content_scripts": { { "matches": ["http://your-login-page-url..."], "js": "/content.js" } } }
在您的
background.js
脚本中,您将在扩展程序启动时立即打开一个选项卡(这也是 Chrome 打开时),如下所示:chrome.tabs.create({url: "http://your-login-page-url..."}); // this URL ---------------^^ should be the same as the one that matches the content script in the manifest.json
将URL换成真实的,检查打开的标签页是否正确。
现在,在您的
content.js
脚本中,该脚本将加载到刚刚创建的选项卡中,您将获得正确的字段并填写它们,然后单击登录按钮。例如,如果登录页面如下所示:
... <span>User:</span><input id="username" type="text"/> <span>Password:</span><input id="password" type="password"/> <button id="login-btn">Log in</button> ...
然后在您的
content.js
脚本中您将执行:document.getElementById('username').value = 'yourusername'; document.getElementById('password').value = 'yourpassword'; document.getElementById('login-btn').click();
显然,您必须用真实凭据替换
yourusername
和yourpassowrd
。
这就是全部,非常简单:只需创建一个选项卡并在其中注入一个内容脚本。此扩展现在会在您打开 Chrome!
时立即为您登录您可以在 url 右侧为登录页面创建带有 Background Page. The background page would just need to open a new tab 的扩展。您的清单将为后台页面指定一个脚本
"background": {
"scripts": ["background.js"]
}
并且该脚本将只包含这一行 JavaScript:
chrome.tabs.create({ url: 'the login page url' });
之所以可行,是因为浏览器启动时会加载背景页面并将其保存在内存中。因此,当您打开浏览器时,js 文件只执行一次。更新扩展时可以重新加载后台页面,但由于这将是一个私有扩展,因此您不必担心这一点,这只会使开发更容易。