-
Notifications
You must be signed in to change notification settings - Fork 7.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
xndroid找开网站报 net::ERR_CONTENT_DECODING_FAILED #8852
Comments
ANDROID_PRIVATE = (null) Dec 05 12:34:35.837 [simple_http_server][WARNING] unhandler cmd:None path:mtalk.google.com:5228 from:127.0.0.1:56806 |
什么浏览器?
怀疑br编码的问题,试试firefox浏览器,新的浏览器都应该可以
|
@XndroidDev
内嵌的pyOpenSSL 库要升级:
OpenSSL dont't support npn/alpn, no HTTP/2 supported.
|
目前已收到两个关于"net::ERR_CONTENT_DECODING_FAILED"的反馈(似乎都是Android 7.0以上), 基本所有浏览器(包括内置LightlingBrowser, firefox未有测试反馈)都出现这种问题,原因我不太清楚. |
用firefox,google可上,youtube facebook提示此连接不受信任 |
这个URL
http://webcache.googleusercontent.com/search?q=cache:pjZbLhLWK8kJ:download.
cnet.com/FreeMind/3000-18509_4-10653082.html+&cd=8&hl=zh-
CN&ct=clnk&lr=lang_en%7Clang_zh-CN
问题是br编码,没有处理好。包括Chrome 也不能访问。
解决方案是在客户端加入br解码处理,可参考 gotoX 项目
参考这里讨论:
XX-net/XX-Net-dev#48
|
@scljy 你试一下firefox浏览器,注意从国外网站下载(如apkpure),不要从国内应用商店下载。 |
@scljy 不好意思,我搞错了.之前有这样的反馈我没注意到. |
着实用chrome可以访问goole play\youtube,goole paly APP用不起,设置appid后下次登陆又必须重新appid是怎么回事? 下载最新版后appid设置可以保存下来了。 |
像:http://webcache.googleusercontent.com/search?q=cache:
pjZbLhLWK8kJ:download.cnet.com/FreeMind/3000-18509_4-
10653082.html+&cd=8&hl=zh-CN&ct=clnk&lr=lang_en%7Clang_zh-CN
这类返回br编码的网站,问题已经解决,待发布新版本。
|
@scljy 你将XX-Net更新到最新版(3.8.6),再在LightningBrowser中试一下 |
换成3.8.6 致命错误,等待XX-Net响应超时 |
有什么日志可以分析吗?
|
大概是因为OpenSSL版本的问题,这两天在清理和修复fqrouter的一些功能.过两天研究下Android的OpenSSL,先用旧版吧
Traceback (most recent call last):
File
"/home/debian/.local/share/python-for-android/build/other_builds/python2-openssl/armeabi/python2/python-install/lib/python2.7/threading.py",
line 552, in __bootstrap_inner
File
"/home/debian/.local/share/python-for-android/build/other_builds/python2-openssl/armeabi/python2/python-install/lib/python2.7/threading.py",
line 505, in run
File
"/data/data/net.xndroid/files/xndroid_files/xxnet/code/3.8.6/gae_proxy/start.py",
line 18, in main
client.main()
File
"/data/data/net.xndroid/files/xndroid_files/xxnet/code/3.8.6/gae_proxy/local/proxy.py",
line 153, in main
CertUtil.init_ca()
File
"/data/data/net.xndroid/files/xndroid_files/xxnet/code/3.8.6/gae_proxy/local/cert_util.py",
line 608, in init_ca
CertUtil.generate_cert_keyfile()
File
"/data/data/net.xndroid/files/xndroid_files/xxnet/code/3.8.6/gae_proxy/local/cert_util.py",
line 226, in generate_cert_keyfile
fp.write(OpenSSL.crypto.dump_publickey(OpenSSL.crypto.FILETYPE_PEM,
pkey))
AttributeError: 'module' object has no attribute 'dump_publickey'
|
我把事情搞大了,看来需要做个判断兼容旧版本 OpenSSL…… |
@SeaHOH
是啊,看来兼容还是有必要的,希望代码不要变得太复杂,不行就来两个版本,一个支持老版本,一个是新版本。
或者考虑不使用新版本OpenSSL api,放弃一点安全性或性能?
|
可不可以用 pickle 作为临时替代? |
不明白pickle 如何替代,请详细一点解释
|
可以用 pickle 保存加载密钥,但是还没想好怎么验证网站证书。 |
想到验证方法了,直接加载测试。 remove_cert = False
context = ssl.SSLContext(ssl.PROTOCOL_TLS)
try:
context.load_cert_chain(cert, CertUtil.cert_keyfile)
except ssl.SSLError:
remove_cert = True |
可以试一下,要找个老版本的系统测试一下
|
刚才看了一下,这个方法是pyOpenSSL16.0.0 后加入的,依赖cryptography1.3.4, PythonForAndroid里的 cryptography库是1.4 .更换pyOpenSSL16.0.0后版本依赖应该没有问题,但启动XX-Net时OpenSSL.crypto.load_publickey仍然出现异常.XX-Net自带的windows cryptography库是1.3.1,倒是用起来没有问题.PythonForAndroid里面的库版本都挺低,也一直没有更新,如果需要比较新的平台相关的库,编译起来会很麻烦
|
Windows 没有问题了。
Android 自己打包,也可以解决。
剩下Linux 平台,可以针对Linux平台,使用内置的pyOpenSSL 库
Mac 用户少,有问题也可用Linux的方案。
|
导入哪个pyOpenSSL 的代码,在 code/default/launcher/start.py 138-155 行
目前代码没有处理好 cryptography等平台相关的库,
要把平台相关库的目录,放到前面
sys.path.insert(0, arch_lib)
|
需要 pickle 吗?不需要我就不搞了。 |
估计Native 实现里的对象,无法用pickle.
还是根据pyOpenSSL 是否支持新api,走不同分支吧。
先保证可用性,再优化。
代码太难看,就先回滚吧
|
3.8.7 已发布,请测试
|
@xxnet 3.8.7 版可用,但br编码的问题更糟糕了 |
3.8.7 是 3.8.6 的修复,没有其它涉及编码问题的修改。 |
但是进入播放页面后视频会加载不出来——再点击下画面中央或播放按钮? |
@SeaHOH 指的是3.8.6和3.8.7的br编码问题 相对于旧版. 3.8.6由于在Android上使用出现异常,无法测试编码问题 |
也对哦,3.8.6 没法试。 |
可能 youtube 的视频内容 域名,每个都不一样,所以刷新解决的机制无法奏效,要用后缀匹配。
|
也可能是 1830997 处理的还不够严谨。 |
具体是什么浏览器? 什么版本。
试试 这些浏览器通过 x-tunnel 或者ssr 之类的代理,能否播放。
找了个早期不支持br的firefox,结果无法播放youtube,即使通过x-tunnel也无法播放。
|
测试了 Chrome v49,不支持br编码的。
第一次打开 youtube 是乱码,刷新一次就好了,可以播放视频的。
因此还是怀疑老版本的浏览器,本身无法播放现在的youtube视频。
具体要测试确认。
|
@xxnet 夸克浏览器(Chrome/40.0.2214.89): 一切正常, 桌面版页面也正常 X浏览器(使用系统webview, Chrome/51.0.2704.81), 第一次访问页面可能乱码, 其余正常, 可播放 LightningBrowser(使用系统webview, Chrome/51.0.2704.81) , 第一次访问页面可能乱码, 无法播放youtube(只能显示播放窗口, 播放页不能加载完全). 系统自带浏览器(Chrome/53.0.2785.146): 第一次访问页面可能乱码, 无法播放youtube(播放页可加载完整). firefox: 一切正常, 未测试桌面版页面的访问 |
@xxnet |
测试用的系统版本是 Android 6.0.1 |
问题比较奇怪。
确实是GAE兼容性问题,还和浏览器有关。
试验了Chrome 53 PC版,可以正常播放 https://www.youtube.com
是不是手机版有什么差异?
要找到问题点才行,手机端的浏览器,无法看到调试信息。
这里看到远程调试Chrome的办法:
https://developers.google.com/web/tools/chrome-devtools/remote-debugging/
可以试试,看看什么地方出问题了。
|
@xxnet |
差异就是 |
@xxnet |
@XndroidDev |
你可以将XX-Net 更新到 3.8.7 或使用firefox, chrome
|
原来3.7.16<tel:3716>不是唯一可用版本,多谢!
在 XndroidDev <notifications@github.com>,2017年12月19日 16:43写道:
你可以将XX-Net 更新到 3.8.7 或使用firefox, chrome
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#8852 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AV9QObNaE9DD0HYPWQzKYEhK9B8DO0z7ks5tB3c_gaJpZM4Q2Otl>.
|
3.9.0 里,智能路由里,也许可以解决这个问题。
大部分被墙网站,可以通过teredo直连了。
|
智能路由代理端口为8086
|
@xxnet |
智能路由还有些小问题, 大部分连接都会 rt_router][DEBUG] www.google.com:80 try direct/redirect fail:RedirectHttpsFail() 6 [smart_router][INFO] m.youtube.com:443 socks [smart_router][DEBUG] www.google.com:443 try direct/redirect fail:ConnectFail() |
try direct/redirect fail:ConnectFail()
这种尝试,在3次失败后,就会快速跳过,不过日志依然会显示出来。
策略优化,还在想办法中。
比如黑名单上的host,优先GAE,然后X-Tunnel,再尝试Direct。
目前底层实现已经完成,就是策略怎么选的问题,需要根据大家反馈来调整。
|
环境:荣耀9 android8 xndroid
可运行m.facebook.com
打开google.com youtube均报错。
网页无法打开
位于:https://m.youtube.com/的网页无法加载,
因为:
net::ERR_CONTENT_DECODING_FAILED
The text was updated successfully, but these errors were encountered: