eprendre / tingshu

一款可在线播放多个免费听书站点的安卓app
999 stars 184 forks source link

不展示网站图片,通过postman测试发现图片请求header需要添加host,实现如下方法依然不展示图片 #30

Closed elevenChen2019 closed 3 years ago

elevenChen2019 commented 3 years ago

4 3 2 1

eprendre commented 3 years ago

代码这样写很危险,会把其它所有源的封面都加上这个Host了。参考这个:

    override fun coverHeaders(coverUrl: String, headers: MutableMap<String, String>): Boolean {
        if(coverUrl.contains("2uxs.com") || coverUrl.contains("xinexin.cn")) {
            headers["Referer"] = "http://www.2uxs.com/"
            headers["Host"] = URL(coverUrl).host
            return true
        }
        return false
    }

具体原因我晚些时候回去看一下

elevenChen2019 commented 3 years ago

加上了也没有用,这是图片地址:http://www.ysxs8.com/pic/uploadimg/2015-7/20157713535867029.jpg 5

eprendre commented 3 years ago

原因找到了,有声小说吧屏蔽了手机的UA(所有图片会默认加上这个UA),用代码改成桌面UA即可:

    override fun coverHeaders(coverUrl: String, headers: MutableMap<String, String>): Boolean {
        if(coverUrl.contains("ysxs8.com")) {
            headers["Host"] = URL(coverUrl).host
            headers["User-Agent"] = getDesktopUA()
            return true
        }
        return false
    }
elevenChen2019 commented 3 years ago

图片问题已经解决。但是音频还是有问题,我在postman上添加Referer或Cookie都行,但是在软件上还是无法播放,然后试着添加User-Agent也没有效果,音频地址是:http://ysting.ysxs8.com:81/%E6%8E%A2%E9%99%A9%E7%9B%97%E5%A2%93/%E3%80%8A%E9%AC%BC%E5%90%B9%E7%81%AF%E7%AC%AC2%E9%83%A81%E5%8D%B7%E9%BB%84%E7%9A%AE%E5%AD%90%E5%9D%9F%E3%80%8B%E8%89%BE%E5%AE%9D%E8%89%AF/%E3%80%8A%E9%AC%BC%E5%90%B9%E7%81%AF%E7%AC%AC2%E9%83%A81%E5%8D%B7%E9%BB%84%E7%9A%AE%E5%AD%90%E5%9D%9F%E3%80%8B001--%E6%9C%89%E5%A3%B0%E5%B0%8F%E8%AF%B4%E5%90%A7[www.ysxs8.com].mp3 以下是postman、浏览器和程序代码截图: 3 1 2 4

eprendre commented 3 years ago

https://github.com/eprendre/tingshu/blob/master/CustomSources/src/main/kotlin/com/github/eprendre/sources_by_eprendre/YouShengXiaoShuoBa.kt 这是我的示例代码,有声小说吧用了iframe嵌套,需要修改script才能获取到内部iframe的元素。 如果你用的是pc版页面,那应该没套iframe。 去app内部的debug试一下,看音频地址是否获取到了。

eprendre commented 3 years ago

原因找到了: PC版页面对音频地址做了验证, 需要加上Cookies。 而我那个代码是手机版的,它的音频地址带上了一个参数: vsid=xxxxxx,免去了验证。 你代码里已经加上Cookies了,理论上应该OK。实在不行加Q群给我代码,晚上帮你调试。

elevenChen2019 commented 3 years ago

在app 里没法调试,因为app调试获取的第一本书音频文件,在原网站上这本书音频文件就是没有的,所以app上调试不出来。我把代码发给你吧,我有二群和三群,怎么发给你。

eprendre commented 3 years ago

问题已解决