gpt4 book ai didi

android - 为什么服务器将应用程序检测为机器人,而不是 android 版本?

转载 作者:行者123 更新时间:2023-11-29 15:38:40 26 4
gpt4 key购买 nike

我正在尝试使用改造 2.0 和 OkHTTP 库构建一个应用程序。现在的问题是当我从移动浏览器访问服务器时,它检测到我的手机有 android 版本。但是当我通过我的应用程序访问服务器时,服务器将其检测为机器人。那么在我的应用程序中如何检测我的手机,因为将来服务器将限制机器人类型访问。

最佳答案

也许你可以使用 user-agent header

通过在改造对象中插入自定义 OkHttpClient,您可以将自定义 header 作为所有 http 请求的默认 header 。

例如,您要添加的自定义 header 是:

'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'

那么你的改造代码应该是这样的:

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request original = chain.request();

// Request customization: add request headers
Request.Builder requestBuilder = original.newBuilder()
.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"); // <-- this is the important line

Request request = requestBuilder.build();
return chain.proceed(request);
}
});
OkHttpClient mClient = httpClient.build();

Gson gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create();

Retrofit retrofit = new Retrofit.Builder()
.baseUrl(YOUR_BASE_URL)
.client(mClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();

关于android - 为什么服务器将应用程序检测为机器人,而不是 android 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45225072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com