区分http移动浏览器和移动应用程序请求

时间:2014-08-06 09:02:48

标签: android ios http user-agent captivenetwork

我阅读了一些帖子,例如thisthis以及其他一些没有回复的帖子。但是我似乎找到了here IOS设备的解决方案。

我需要拒绝来自任何设备的任何应用的任何http请求,并且只处理来自网络浏览器的请求,因此主要问题是:

有一种确定的方法可以判断HTTP请求是来自移动应用程序还是来自Web浏览器?

由于

示例:我从手机/平板电脑开始接收所有http请求(我在开发wifi热点后面的应用程序),所以我处理来自Facebook App,Whatsup App和浏览器的请求。我必须拒绝来自Facebook和Whatsup的请求,并仅处理来自浏览器的请求。应用程序用户代理似乎与本机设备浏览器相同。

2 个答案:

答案 0 :(得分:3)

你可以做一件事。从应用程序端设置自定义用户代理。

您可以在网络服务呼叫请求期间在android和iphone中设置自定义用户代理。

适用于Android

DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "android");

适用于Iphone

NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] 
                                       initWithURL:[NSURL URLWithString:[yourURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
NSString *userAgent = "iphone";
[urlRequest setValue:userAgent forHTTPHeaderField:@"User-Agent"];

如果用户代理是"检查请求标头" android"或" iphone"来自应用程序,其他来自浏览器。

答案 1 :(得分:1)

您可以在请求标头中检查用户代理, 我记得移动浏览器为用户代理和桌面浏览器发送不同的值。 只需调试用户代理标头并根据值进行验证。