seven332 / EhViewer

[DEPRECATED] An Unofficial E-Hentai Application for Android
http://www.ehviewer.com/
Apache License 2.0
8.82k stars 963 forks source link

图片配额已用尽,请停止下载 #262

Open PolarBears opened 7 years ago

PolarBears commented 7 years ago

版本号:1.0.22 qq 20170524065855 qq 20170524065917

EhViewer发起的请求:

GET https://exhentai.org/s/b4ef033951/1019627-34 HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36
Host: exhentai.org
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: ipb_member_id=*******; ipb_pass_hash=********************************; igneous=45d4d28c2; s=e22bfdf22; hath_perks=m1.a.t1-160fd18724; lv=1495568432-1495575532; uconfig=uh_y-xr_a-rx_0-ry_0-tl_r-ar_0-dm_l-prn_y-cats_6-fs_f-xns_0-xl_1025x2049x1044x2068x1054x2078x1064x2088x1074x2098x1084x2108x1094x2118x1104x2128x1114x2138x1124x2148x1134x2158x1144x2168x1154x2178x1278x2302x1279x2303-rc_0-lt_m-ts_l-tr_2-cs_a-sc_0-to_a-pn_1-hp_-hk_-tf_n-oi_n-qb_n-ms_n-mt_n

ehrequest

返回的是509,当我把cookie中的hath_perks=m1.a.t1-160fd18724修改为hath_perks=m1.m2.m3.a.t1-50f7512d50(从电脑浏览exhentai的cookie中提取)则不返回509

ehrequest1

PolarBears commented 7 years ago

如果不改cookie维持原来的请求改为经过代理下载的话也不会返回509,可以正常下载.

seven332 commented 7 years ago

我不太清楚 hath_perks 这一项 cookie 是怎么控制的,所以不知道怎么做调整。或许应提供 cookie 编辑功能?

PolarBears commented 7 years ago

@seven332 hath_perks的值根据https://e-hentai.org/hathperks.php里面开启的Hath Perks而变化 推测hath_perks=m1.m2.m3.a.t1-50f7512d50: m1/m2/m3分别为More Pages/Lots of Pages/Too Many Pages a为Ads-Be-Gone t1为More Thumbs 50f7512d50应该是校验用

刚我尝试开启Tag Flagging,cookie则更变为m1.m2.m3.a.tf.t1-8d4b21d3c6,tf应该就是Tag Flagging了. 开启新的hath perk后似乎需要访问https://exhentai.org/uconfig.php才会对这个cookie进行重新设置,带着旧的cookie访问其他页面没有发现重新设置此cookie现象,在应用里退出登录再重新登录也能获取最新的hath perk设置,不过现在不清楚带着旧的这个cookie访问Download original连接会显示什么,我之后会试试再反馈结果给你.

cookie编辑功能应该是不需要提供的,可能需要根据我测试的结果需要重新修改判断509的逻辑?

PolarBears commented 7 years ago

cookie为hath_perks=m1.a.t1-160fd18724时配额是刚好到一万左右就提示配额用尽,More Pages这个hath perk刚好就是把配额上限提升到一万,大概这配额限制是由此cookie控制,而 当前已用配额 > 配额上限(由此cookie推断而非真实上限)时浏览页面就返回509图片,160fd18724应该是用来计算此cookie是否真实有效,目前没观测这个值根据时间变化,很可能是根据此cookie前半部分进行计算每个账户的结果都不一样.

另外建议一旦遇到509的情况下就自动暂停所有任务,个人认为没有必要每个页面都访问一次判断能不能下载.

PolarBears commented 7 years ago

另外想问一下,目前的下载逻辑在下载原图设置下有没有可能造成浏览图片时刚好下载配额达到5000/5000,可以浏览图不会返回509图片,然后进行下载原图时由于配额不足下载下来的是一个内容为提示配额已用尽的文件(打开提示不是有效的图片,文件里面的内容实际上是一个文本文件)?

seven332 commented 7 years ago

我刚刚买了个 hath perks 试了下,只要访问任意画廊详情界面或者 https://e-hentai.org/hathperks.php 或者 https://e-hentai.org/uconfig.php 都可以获取 hath_perks 的 cookie 值,不过好像只有访问 https://e-hentai.org/hathperks.php 才会刷新 hath_perks。

至于 509 问题,现在只是通过图片的网址来判断的,所以你说的这种情况我觉得还是有可能发生的。

Morriaty-The-Murderer commented 7 years ago

配额是日配额还是月配额?是浏览量还是下载量?

我一直没下载过本子,也没开过设置里的『下载原图』,但最近一个礼拜一直509。

手动改cookie有效吗?应该是按ip算unique visitor的吧?

PolarBears commented 7 years ago

@Morriaty-The-Murderer 这是我的理解: 配额分两种:账户配额/IP配额

如果存在cookie的问题就别折腾了,退出账户重新登录就可以了,而我这里的cookie问题是带有管理账户配额上限的cookie值没有刷新.

在登录了帐号的情况下(推测)同时计算账户配额和IP配额,我目前用到现在为止我认为IP配额是按照流量计算的,大约在1GB左右的样子.

帐号的配额可以在这里能看到:Image Limits 默认配额是5000,具体扣配额的计算方式似乎是预览图片消耗1配额,下载原图消耗不定量的配额的样子. 使用下载功能的话(在开启原图模式下)是每张图消耗预览图+下原图的配额. 帐号配额是每分钟恢复3点,IP配额好像是按照时间(24小时?)重置,或是也是自然等恢复?

This regenerates at a rate of 3 per minute.

想要增加配额可以通过Hath Perks来增加,最大能增加到50000配额.

在登录了帐号的情况下似乎是这样的(没开金星下,我也没钱开金星测试):

bool 是否能下载/浏览()
{
    if( ((帐号配额上限 - 已消耗配额) > 0) || (IP已下载的流量 < 1GB) )
        {
            return true;
        }
    else return false;
}

IP的浏览消耗是怎么算的我不清楚,不过我建议把配额开到50000限制,这花不了几个钱,我开到50000限制以后就再也没用完过配额了.