#1 - 2014-3-26 05:32
小寒 (Idle singer of an empty day)
//更新:如果是移动设备,在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 都已经加载好,大功告成。
#2 - 2014-3-26 06:12
(双目失明丝毫不影响我上BGM)
真是变态的技术呢
#2-1 - 2014-3-26 06:13
小寒
真是好色的小百合呢
#2-2 - 2020-8-25 09:13
bhjml
真是奇妙的相遇呢
#3 - 2014-3-26 07:10
(BGMのTrinitas<=>婊冈妈<=>补冈妈<=>拜冈妈 三位一体 ...)
直接允许跨站cookies不就好了。
#3-1 - 2014-3-26 07:18
小寒
好高端的方法!求详细指教
#4 - 2014-3-26 11:44
(いつか忘れる本の題名)
我一直觉得小寒很正经的样子。
结果也是一个绅♂士呢(bgm86)
#4-1 - 2014-3-26 12:53
小寒
就算是这么绅士的话题我写出来的教程不也挺正经的吗!(bgm68)