有没有办法让我捕获从我的应用程序发送的所有http请求,并在发送之前修改它们的头?我想修改它们的referer头,以便发送请求的服务器认为它们来自web浏览器而不是移动应用程序。谢谢您!
更新:为了给你更多的上下文,我计划使用phonegap将chrome扩展Instant Music移植到android应用程序中。有些YouTube视频在PC上是不允许在移动设备上播放的,我怀疑这是因为嵌入Android应用程序中的YouTube播放器没有引用头。我正试图找到解决这个问题的办法,这样我也可以在手机上播放这样的视频。

最佳答案

YouTube检测到用户浏览器的Agent String,其中包含有关浏览器的信息。如果使用WebView来显示youtube视频,则可以设置WebView'sAgent String
您可以在Internet上找到不同浏览器的代理字符串。我在这里找到了一些:Agent Strings
以下是我如何通过模仿Firefox浏览器播放Bob Marley的歌曲,这是手机上不允许播放的歌曲:

package com.my.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

    public class MyActivity extends Activity {

        private WebView mWebView ;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            mWebView  = new WebView(this);
            // Enable javascript
            mWebView.getSettings().setJavaScriptEnabled(true);
            // Impersonate Mozzila browser
            mWebView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:21.0.0) Gecko/20121011 Firefox/21.0.0");
            final Activity activity = this;

            mWebView.setWebViewClient(new WebViewClient() {
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                    Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
                }
            });

            mWebView .loadUrl("http://youtube.com/watch?v=x59kS2AOrGM");
            setContentView(mWebView);
        }

    }

编辑:
您还需要为您的活动授予使用Internet的权限,方法是将此行添加到您的AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />

08-18 09:33
查看更多