Android应用调用getJson()获取PHP返回JSON时得到HTML内容的问题
解决Android应用请求返回HTML而非JSON的问题
嘿,看起来你碰到了服务器的反爬/人机验证坎儿了——返回的内容里带aes.js和加密逻辑,这明显是服务器在验证你是不是真实用户,而不是自动化爬虫。大概率是Cloudflare这类网站防护工具在搞事情,我给你几个实用的解决思路:
1. 先把请求头改成浏览器同款
服务器很多时候靠请求头判断请求来源,你得把Android里的请求头伪装成正常浏览器的样子,几个关键头不能少:
User-Agent:直接抄主流桌面浏览器的,比如Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36Accept:明确告诉服务器你要JSON,设成application/json, text/javascript, */*; q=0.01Referer:如果接口是从某个页面跳转过来的,添上那个页面的URLCookie:先在浏览器里访问目标网站,抓包拿到有效Cookie,直接搬过来用
要是你用OkHttp发请求,这么改就行:
OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(chain -> { Request original = chain.request(); Request request = original.newBuilder() .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36") .header("Accept", "application/json, text/javascript, */*; q=0.01") .header("Referer", "https://你的目标域名.com/") .header("Cookie", "从浏览器抓的Cookie值") .build(); return chain.proceed(request); }) .build();
2. 处理Cloudflare这类防护的验证逻辑
如果确实是Cloudflare的验证,有两种常见玩法:
- 用WebView“躺赢”:直接在Android里用WebView加载目标接口,等WebView自动完成人机验证(比如滑动拼图、点击验证),然后从WebView里拿验证后的Cookie,再用这个Cookie去请求JSON接口。代码大概是这样:
WebView webView = new WebView(context); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); // 拿验证后的Cookie String validCookie = CookieManager.getInstance().getCookie(url); // 带着这个Cookie去请求JSON fetchJsonWithCookie(validCookie); } }); webView.loadUrl("https://你的目标接口地址.com");
- 手动计算验证参数:如果不想用WebView,就得把返回HTML里的JavaScript加密逻辑扒出来,用Java或者Android里的JS引擎(比如Rhino)执行,算出服务器要的验证参数,再构造新请求带过去。不过这个方法比较费时间,得啃JS代码。
3. 确认是不是没登录/会话失效
有时候返回HTML是因为你没登录,服务器直接跳转到登录页面了。先在浏览器里完成登录流程,抓包拿到登录后的会话Cookie,再把这个Cookie加到Android的请求里,大概率就能拿到正常的JSON了。
4. 检查请求是不是被重定向了
用Charles或者Fiddler抓个包看看,你的请求是不是被服务器302重定向到验证页面了?如果是,得跟着重定向走,先处理验证,再去请求目标接口。
友情提醒:别忽略网站的使用条款和
robots.txt,确保你的请求合规,别给自己惹麻烦哦。
内容的提问来源于stack exchange,提问作者blackJack
相关产品推荐
相关产品推荐

