-
Notifications
You must be signed in to change notification settings - Fork 537
提供了代理支持 #1582
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
base: main
Are you sure you want to change the base?
提供了代理支持 #1582
Conversation
mpv 的代理相当简单,参考 https://mpv.io/manual/master/ 的 http-proxy 部分。你可以在 player_controller.dart 中使用类似 pp.setProperty 的手段进行设置,这里的主要问题是 mpv 只支持 http 代理,不支持 socks 代理,我们也许应该在这个 PR 中移除 socks 支持以保持一致。为 webview 设置代理更加复杂,需要查看各个 webview 包的文档,我们需要先实现文档中提供了相关用发的平台,对于需要修改对应 webview 插件的平台,如果你有兴趣的话,可以进行,如果不感兴趣的话,我会在后续进行相关尝试。 |
|
要分两点讨论 此前我在本地尝试着实现弹幕密度的调整,但是因为其他工作而暂时搁置,这其中的实现我还未测试,是错误提交。 然后是socks5,其实dart原生对于socks5的支持非常差,站在我的角度上确实可以移除socks5,只不过考虑到会有潜在用户有这样的需求(不过现在大部分代理工具都支持混合端口) 其余的内容我今晚看一下怎么实现,应该不难。 |
该功能应在单独的分支中实现
- 移除 SOCKS5 支持以保持与 mpv 一致 - 添加 mpv http-proxy 属性设置 - 移除 flutter_socks_proxy 依赖 - 简化 proxy_utils 解析逻辑
|
现在的代码中,我增加了mpv的全平台支持。 目前我们只剩下webview的嗅探实现。 由于iOS/macOS/Windows/Linux均没有可用的flutter api来设置代理。所以我仅仅实现了android。对于其他平台的webview嗅探实现你有什么好的想法吗? |
|
我有些怀疑 webview_proxy_utils.dart 存在的意义,这可能导致 webview 相关生命周期问题,我们可以直接在 webview_controller_impel 这样的场合处理代理 对于windows,我们有类似 对于linux,我之前尝试基于本地代理的视频解析器时实现过代理设置功能,在 https://github.com/Predidit/linux_webview_window/tree/http_proxy ,相关代码量很少,你可以尝试以下把这个变更 rebase 到当前分支测试 对于 macOS/iOS ,我没有什么想法,我对这两个平台的理解非常非常有限 |
|
对于windows的问题,如果通过chromium的方式传入,那似乎每次更改代理都需要用户来重启应用。 |
|
这是你实际测试的结果吗,正常情况下视频页面退出后 chromium 线程就被销毁了,它正确地重新初始化 |
|
你是对的,此前是我脑测的结果,我只是粗略查看了代码并没有测试,在经过测试后我发现他确实会正确重新初始化。 |
|
Hi, 我想知道这个 PR 还是你的视线范围内吗,在我看来它已经很接近完成,macOS/iOS 的 webview 代理实现我们应该暂时搁置 |
|
这个pr还在我的todolist中,我预计在明天继续开发。 |
- Add proxy configuration to Linux WebView controller - Use local linux_webview_window with HTTP proxy patch
Switch from local path to git reference for CI compatibility
|
本pr已经完成了linux的代理,我在虚拟机测试过已经没问题了。 |
|
看上去相当不错,只有两个小问题
|
|
bangumi是测试时遗漏的,现在已经恢复了代码。 proxy_settings现在已经对齐规范。 |
|
只有最后一个小问题,目前 proxy_settings 的交互逻辑还是有点不通顺,也就是代理开关和保存按钮的功能分界暧昧。 可以考虑 webdav 同步页面的处理,在一级子页面中提供 代理开关 和 代理设置,代理设置转向一个只有代理地址和认证信息填写等内容的二级页面,在这里提供一个带有 Text 的 FloatingActionsButton 进行代理保存和测试。有外面的代理开关来控制代理启用和禁用。 |
|
在实际使用测试时,我注意到一个问题 如果我填写一个格式正确,但并不存在的代理服务器,永远不会出现测试失败的 toast |
fixed #1546
入口在这里,添加了http与socks5的支持,已经在本地进行测试,确认测试无误。