代码之家  ›  专栏  ›  技术社区  ›  aloneman

为Youtube API设置内部代理

  •  1
  • aloneman  · 技术社区  · 3 年前

    Youtube禁止我国的IP地址,我们无法访问Youtube。 我尝试更改开源的Skytube,以便在没有外部VPN或代理应用程序的情况下访问Youtube。 我打算在另一个国家租用一台服务器来创建OpenVPN或PPTP VPN。 我可以创建一个仅将我的youtube流量隧道到VPN的内部应用VPN吗?怎样? 或者我必须通过NetHttpTransport添加一个代理java类?我是怎么做到的?

    这是在Skytube中初始化Youtube连接的方法:

    public static YouTube create() {
            HttpTransport httpTransport = new NetHttpTransport();
            JsonFactory jsonFactory = AndroidJsonFactory.getDefaultInstance();
            return new YouTube.Builder(httpTransport, jsonFactory, new HttpRequestInitializer() {
                private String getSha1() {
                    String sha1 = null;
                    try {
                        Signature[] signatures = SkyTubeApp.getContext().getPackageManager().getPackageInfo(BuildConfig.APPLICATION_ID, PackageManager.GET_SIGNATURES).signatures;
                        for (Signature signature: signatures) {
                            MessageDigest md = MessageDigest.getInstance("SHA-1");
    
                            md.update(signature.toByteArray());
                            sha1 = BaseEncoding.base16().encode(md.digest());
                        }
                    } catch (Throwable tr) {
                        Logger.e(this, "...", tr);
                    }
                    return sha1;
                }
                @Override
                public void initialize(HttpRequest request) throws IOException {
                    request.getHeaders().set("X-Android-Package", BuildConfig.APPLICATION_ID);
                    request.getHeaders().set("X-Android-Cert", getSha1());
                }
            }).setApplicationName("+").build();
        }
    
    0 回复  |  直到 2 年前