如何在IDE中调用Buff163 API?登录验证问题及密钥疑问
关于Buff163 API请求返回“login required”的解决方法
问题描述
我通过以下Java代码向Buff163 API发起请求:
HttpClient client = HttpClient.newHttpClient(); HttpRequest request=HttpRequest .newBuilder() .uri(URI.create("https://buff.163.com/api/market/goods?game=csgo&page_num=1&page_size=2&min_price=150&max_price=200&category=weapon_awp&sort_by=price.asc")) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());但返回“login required”;而在已登录Buff163的浏览器中发起该请求可得到正确响应。请问该API是否无API密钥?如何在IDE中成功发起请求?我尝试查找该API的官方文档但未找到。
解决说明
- 该API没有官方提供的独立API密钥,它采用会话Cookie鉴权机制——浏览器能正常请求是因为登录后已携带了有效的会话凭证。
- 在IDE中实现成功请求的关键是给请求添加登录后的Cookie,具体操作:
- 打开已登录Buff163的浏览器,按F12调出开发者工具,切换到「网络」面板;
- 手动触发一次目标API请求(比如刷新对应页面),在网络请求列表中找到该API的请求条目;
- 查看请求头,复制完整的
Cookie字段内容; - 修改Java代码,为HttpRequest添加Cookie请求头:
HttpClient client = HttpClient.newHttpClient(); HttpRequest request=HttpRequest .newBuilder() .uri(URI.create("https://buff.163.com/api/market/goods?game=csgo&page_num=1&page_size=2&min_price=150&max_price=200&category=weapon_awp&sort_by=price.asc")) .header("Cookie", "这里替换成你复制的Cookie内容") .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
- 额外注意:
- Cookie有有效期,过期后需要重新从浏览器获取;
- 这是非官方公开的接口,Buff163可能随时调整接口规则或鉴权逻辑;
- 不要泄露你的Cookie,否则会导致账号安全风险。
内容的提问来源于stack exchange,提问作者almax35
相关产品推荐
相关产品推荐

