之前电脑内存小, 谷歌浏览器又是内存怪物, 每次浏览器不用的时候总是习惯关掉. 这就导致了每次进入常用的网站就要重新登陆, 非常烦;  对! 就是即使浏览器保存了密码, 大部分网站仍然要输入一下验证码才能进入(尤其是Github还要邮箱验证)!

           可能每个程序员都是强迫症+效率狂热追求者hh. 笔者期间想了各种各样的办法来解决这个问题! 前前后后小一个月,终于完美解决~ 下面笔者想以Bilibili网站的登录为例, 按照解决这个问题的时间顺序介绍一下笔者的解决过程; 最后写一些相关技术的基本知识作为个人笔记. 

        首先警告: 方法核心是通过向浏览器写入网站上用于验证的Cookie; 明文导出、加载关键的Cookie信息是非常危险的! 不建议在存在资金的网站上使用. 

用到的工具:

  • 谷歌浏览器
  • EditThisCookie插件(饼干插件)
  • 油猴插件   

                                                                      

 

1 笔者最初想到的方法: 导出Cookie+导入 (使用.bat文件优化)

1.1 基本

      使用饼干插件, 可以导出当前浏览器的Cooki信息, 笔者将几个常用的网站(GitHub,CSDN,bilibili...)登录后, 导出Cookie信息, 保存到txt中

保存了很多很多~ 

这里有第一个坑:

导出的格式是JSON! 

JSON的导入Cookie插件的格式是: 

[  {你的第一个Cookie}   ,  {你的第二个Cookie}    ]

注意最后一个后面没有逗号, 注意最外部要用中括号括起来.

吃了在学校没用过JSON的亏

 

全部导出之后, 只需要每次复制, 然后点击插件, 导入, 刷新网站就可以实现了自动登录!

 

1.2 第一个优化

即使是全部导出了, 每次开机之后仍需要:

打开txt, Ctrl+A全选, Ctrl+c复制, 打开插件点击导入, 粘贴 ,刷新

笔者想到的办法是使用 .bat文件, 自动复制Cookie.

 

type Cookie.txt|clip

放到同一目录下, 一行代码就可以解决复制!

这样只需要双击.bat文件, 导入即可 

 

2 使用油猴脚本JS代码全自动导入!

最近笔者在0基础学习Vue, 顺便学了一些JS的用法, 就想着能不能用油猴脚本自动的进行导入呢! 

边开始学习了一下油猴脚本的基本格式、Cookie的保存格式、JS操作Cookie的相关方法

直接上代码:

// ==UserScript==
// @name         Eric全自动网站登录
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Bilibili/CSDN/Github/无需点击,全自动登录
// @author       Eric
// @match        *://*.bilibili.com
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    document.cookie = "SESSDATA=[换成你自己的SESSDATA值]; Domain=.bilibili.com;";

})();

在Bilibili中, 负责用户登录的Cookie 是SESSDATA, 只需要写一个油猴脚本, 保存即可

其中 match 换成你想要匹配的网站的网址即可

 

这里有几个坑:

一定要为Cookie设置域名! 不然保存的是 www.bilibili.com B站自己识别不到,只识别 ".bilibili.com" 这个坑真的是我试了好久才试出来! 

之后打开B站, 每次进入B站! 自动登录!! 完美!!!

完 美 解 决!!!!!

其他的网站也可以类似!

 

很简单的一个小功能前前后后忙活了好久! 各种试错、学习 才有了最后的一行代码= =

而且可能处于安全原因, Greasy Fork上面也没有类似的脚本, 只好自己一点一点琢磨.

成功的时候真的开心到飞起! 最后付一点个人笔记(来自各大博客, 信息比较杂, 如有侵权,联系作者修改删除)

 

3 油猴脚本的格式说明

       首先是元数据块: 元数据块是描述脚本的一个用户脚本部分。它通常包含脚本名称,命名空间,描述和包含和排除规则。元数据块出现在JavaScript行注释中,可能会出现在脚本内的任何位置, 但通常靠近文件的顶部。

示例备注
@name@name  脚本名称脚本的名称。该项将显示在页面的标题以及链接内容,必填项
@description@description  脚本功能描述脚本功能的描述,显示在脚本标题下面,必填项
@namespace @namespace 及 @name 这两个属性将帮助用户脚本管理器判断是否已安  装该脚本。
@version@version  0.0.1脚本的版本标记将使用 Mozilla 版本格式 并显示于脚本的简介页面,必填  项
@include
@exclude
@match
@match  *://www.52pojie.cn/*描述脚本将执行的页面。该列表会被分析并展示到脚本的简介页面,以及  用于脚本分类。
@require@require http://cdn.bootcss.com/jquery.min.js引用外部脚本到您的脚本
@updateURL
@installURL,  @downloadURL
 告知用户脚本管理器应该在哪个地址获取脚本更新。
@license 脚本所使用的许可协议名称或地址,该协议需包含用户是否允许二次分发  或修改  脚本的权利。不提供许可协议则表示用户仅允许个人使用且不得  二次分发;该协  议将在脚本的简介页面显示。
@supportURL 用户可获得该脚本技术支持的链接地址 (如:错误反馈系统、论坛、电子  邮件),该链接将显示在脚本的反馈页面。
@contributionURL 用于捐赠脚本作者的链接,该链接将显示在脚本的反馈页面。
@contributionAmount 建议捐赠金额,请配合 @contributionURL 使用。
@compatible 标记此脚本与某个浏览器兼容,兼容性信息将显示在脚本的简介页面上。
@incompatible 标记此脚本与某个浏览器不兼容,兼容性信息将显示在脚本的简介页面  上。

这一部分创建油猴脚本的时候就会自带, 虽然看上去像是注释, 不过也不要删除! 是有用的元数据

 

4 JS操作Cookie

 

4.1通过 JavaScript 创建 cookie

JavaScript 可以用 document.cookie 属性创建、读取、删除 cookie。

通过 JavaScript,可以这样创建 cookie:

document.cookie = "username=Bill Gates";

您还可以添加有效日期(UTC 时间)。默认情况下,在浏览器关闭时会删除 cookie:

document.cookie = "username=John Doe; expires=Sun, 31 Dec 2017 12:00:00 UTC";

通过 path 参数,您可以告诉浏览器 cookie 属于什么路径。默认情况下,cookie 属于当前页。

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

 

4.2通过 JavaScript 读取 cookie

通过 JavaScript,可以这样读取 cookie:

var x = document.cookie;

 

4.3通过 JavaScript 改变 cookie

通过使用 JavaScript,你可以像你创建 cookie 一样改变它:

document.cookie = "username=Steve Jobs; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

旧 cookie 被覆盖。

 

4.4通过 JavaScript 删除 cookie

删除 cookie 非常简单。

删除 cookie 时不必指定 cookie 值:

直接把 expires 参数设置为过去的日期即可:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

您应该定义 cookie 路径以确保删除正确的 cookie。

如果你不指定路径,一些浏览器不会让你删除 cookie。

 

5 Cookie 的格式

cookie的格式
Set-cookie: NAME=VALUE Expires/Max-age=DATE Path=PATH Domain=DOMAIN_NAME SECURE
参数意义:
NAME: cookie的名字
VALUE: cookie的值。
Expires: cookie的过期时间。
Path: cookie作用的路径。
Domain: cookie作用的域名。
SECURE:是否只在htps协议下起作用
 

各个属性之间用 分号分隔! Domain很关键!

 

6 HttpOnly

        如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。XSS全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。

一般的网站中都有这个熟悉哦~ 不过如果使用油猴的话带这个属性, 就无法进行写入; B站的话即使写入的Cookie没有HttpOnly属性只要刷新两次还是可以进入的

 

7 能不能操作本地文件? -不能

读者还想过 使用油猴脚本操作本地的复制.bat, 然后可以实现打开网站就可以自动复制,会更方便

能不能实现? 不能!

只能是Windwos系统+IE浏览器才可以使用本地的JS操作本地可执行文件

使用ActiveXObject

try{
  var wsh=new ActiveXObject("wscript.shell");
  wsh.run('file:///C:\\Program%20Files%20(x86)\\XXXX.exe');
 }catch(e){     
   alert('找不到文件(或它的组件之一)。请确定路径和文件名是否正确.');       
 }

 

8 结束

从最开始的导出Cookie复制粘贴进来, 到今天使用油猴, 前前后后为了解决这个问题想了好多办法~ 

学会了JSON格式、JS的基本写法、油猴脚本的创建~

夸自己! 不愧是工科~  hhhh

希望之后能学会谷歌浏览器插件的编写~ 能写个CRX直接在浏览器插件里面一键登录~

最近又忙又烦躁~ 

在这祝自己一切顺利hiahiahia 
 

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐