//更新:如果是移动设备,在iOS上可以连接Safari使用Developer Options,在安卓上可以连接Chrome直接Inspect。原理相同。Exhentai貌似更新了对cookie检查的严谨性,凡是过期的一律删除给熊猫图。只要把到期时间写往后一点就好了。
RT。
ExHentai 貌似资源更多更全,在 e-hentai gallery 上被 pinning for fjords 的图集在 ExHentai 上也能看到。但是 ExHentai 有时候会对一些浏览器拒绝访问,只给你一张熊猫图。
如果查看 cookies 可以发现,e-hentai gallery (g.e-hentai.org)在本地存储了 ipb_session_id、ipb_member_id、uconfig 和 ipb_pass_hash 这几个 cookie。而在 ExHentai 上的 cookies 只有一个,其名为 yay,值为 louder。也就是说,我们需要以上的几个 cookies 才能够让 ExHentai 给我们显示正常页面。如果 ExHentai 的服务器只读取到名为 yay 的 cookie ,就会显示熊猫图。由此可以得出思路:让 ExHentai 的服务器也能读取到这些 cookie 就可以了。
这种情况在 Firefox 和 Chrome 上都比较好解决。首先删除掉 ExHentai 域名下的 yay 名称的 cookie,然后访问 e-hentai 并登录。登录之后浏览器就保存好了 e-hentai 的 cookie。此时使用 Firefox 和 Chrome 的各种扩展就可以修改 cookie 了,把这些 e-hentai 的 cookies 的域名全部从 .e-hentai.org 改为 .exhentai.org。保存好之后刷新一下 ExHentai 的页面,熊猫图应该就消失了。
在 Safari 下就比较难,因为 Safari 没有能够直接修改 cookies 的地方。怎么办呢?不用慌,苹果开发者网络提示,虽然 cookies 不能被直接修改,但是可以在 console 里用 document.Cookie 来操纵。这是一个 javascript 命令,在
MDN 上可以看到详细介绍。
首先还是打开 e-hentai,让浏览器获取 cookies。

然后,在 Safari 的 web inspector 的 console 里加载 MDN 上提供的 framework,也就是把下面的代码粘贴到 console 里按回车键:
var docCookies = {
getItem: function (sKey) {
return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)s*" + encodeURIComponent(sKey).replace(/[-.+*]/g, "$&") + "s*=s*([^;]*).*$)|^.*$"), "$1")) || null;
},
setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {
if (!sKey || /^(?:expires|max-age|path|domain|secure)$/i.test(sKey)) { return false; }
var sExpires = "";
if (vEnd) {
switch (vEnd.constructor) {
case Number:
sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
break;
case String:
sExpires = "; expires=" + vEnd;
break;
case Date:
sExpires = "; expires=" + vEnd.toUTCString();
break;
}
}
document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : "");
return true;
},
removeItem: function (sKey, sPath, sDomain) {
if (!sKey || !this.hasItem(sKey)) { return false; }
document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + ( sDomain ? "; domain=" + sDomain : "") + ( sPath ? "; path=" + sPath : "");
return true;
},
hasItem: function (sKey) {
return (new RegExp("(?:^|;s*)" + encodeURIComponent(sKey).replace(/[-.+*]/g, "$&") + "s*=")).test(document.cookie);
},
keys: /* optional method: you can safely remove it! */ function () {
var aKeys = document.cookie.replace(/((?:^|s*;)[^=]+)(?=;|$)|^s*|s*(?:=[^;]*)?(?:1|$)/g, "").split(/s*(?:=[^;]*)?;s*/);
for (var nIdx = 0; nIdx < aKeys.length; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }
return aKeys;
}
};
这样就能够在下面快速地使用 docCookies 这个函数了。因为 safari 不能修改 cookies,我们干脆直接在 ExHentai 的域名下新增 ipb_member_id、uconfig、ipb_session_hash 这几个 cookies 就可以了。注意
cookies 的过期时间必须跟 e-hentai 的一致。
根据作者给出的用法,这个 framework 中要创建一个新 cookie 应该这样:
docCookie.setItem("cookie名称", "cookie值", "过期时间", "路径", "cookie所属域名","安全性");
例如,创建一个属于 .exhentai.org 域名下的 cookie,名为 ipb_member_id,值为1005180,路径是根目录下("/"),过期时间是2015年3月25日下午1:51:20GMT,就这样写:
docCookies.setItem("ipb_member_id", "1005180", "Wed, 25 Mar 2015 01:51:20 GMT", "/", ".exhentai.org");
按下回车后,浏览器就创建了一个新的 cookie。
『安全性』不用理会,直接不写。e-hentai 和 ExHentai 的 cookies 的路径全部都是根目录("/")下。注意所属域名中填写的一定要先带一个句点,即".exhentai.org"而不是"exhentai.org"。
加载好 framework 后按照这样的语法先后创建好这几个 cookies 之后,再刷新一下 ExHentai 的页面,就会发现已经可以正常进入,熊猫图也不见踪影。而打开 Web Inspector 可以看到各个刚才创建的 cookies 都已经加载好,大功告成。