有没有办法让我捕获从我的应用程序发送的所有 HTTP 请求,并在发送之前修改它们的 header ?我想修改它们的 referer
header ,以便将请求发送到的服务器认为它们来自网络浏览器而不是移动应用程序。谢谢!
更新:为了给您更多背景信息,我打算移植一个 chrome 扩展 Instant Music通过使用 Phonegap 进入 Android 应用程序。一些在 PC 上允许的 YouTube 视频在移动设备上是不允许的,我怀疑这是因为嵌入在 Android 应用程序中的 youtube 播放器没有引用 header 。我正在尝试找到解决此问题的方法,以便我也可以在移动设备上播放此类视频。
最佳答案
Youtube 检测用户浏览器的 Agent String
,其中包含有关浏览器的信息。如果您要使用 WebView
来显示 youtube 视频,则可以设置该 WebView
的 Agent String
。
您可以在互联网上找到不同浏览器的代理字符串。我在这里找到了一些: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);
}
}
编辑:
您还需要通过将此行添加到您的 AndroidManifest.xml
来为您的 Activity 授予使用互联网的权限:
<uses-permission android:name="android.permission.INTERNET" />
关于android - 如何修改来自 Android 应用程序的 HTTP 请求 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24365714/