如何让用户代理调用 bottlepy API

How do I get the user agent calling a bottlepy API

我正在尝试获取正在调用使用 Bottle 微框架构建的 API 的用户代理。当使用浏览器直接调用 API 时,它会显示用户代理是什么。但是,当它从另一个应用程序调用时,例如在 PHP 或 JAVA 中,它不显示用户代理。

但是无论请求是来自浏览器还是其他应用程序,我都可以获得 IP 地址

client_ip = request.environ.get('REMOTE_ADDR') 
logging.info("Source IP Address: %s" %(client_ip)) #Works
browser_agent = request.environ.get('HTTP_USER_AGENT')
logging.info("Source Browser Type: %s" %(browser_agent)) #Doesn't work when called from an application

当我使用浏览器或邮递员调用它时,它会给我如下结果:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.3

那么,是否有一个特殊的参数可用于了解哪种类型的代理正在调用 API?

客户端不需要发送 User-agent header。您的浏览器正在发送一个(和大多数人一样),但是您的 PHP 和 Java 客户端(可能)没有。

如果您可以控制客户端,请为他们发出的每个请求添加一个用户代理 header。例如,在 PHP 中,请参阅 this SO answer