使用Groovy打开URL时收到状态403

jslywgbw  于 2023-01-29  发布在  其他
关注(0)|答案(1)|浏览(157)

我正在尝试使用Groovy脚本读取一个网页的内容。该页面包含我希望定期保存的一个温度传感器的读数。我尝试了最简单的变体:

def url = "https://measurements.mobile-alerts.eu/Home/MeasurementDetails?deviceid=021B5594EAB5&vendorid=60122a8b-b343-49cb-918b-ad2cdd6dff16&appbundle=eu.mobile_alerts.mobilealerts&fromepoch=1674432000&toepoch=1674518400&from=23.01.2023%2000:00&to=24.01.2023%2000:00&command=refresh"
def res = url.toURL().getText()
println( res)

结果是:

Caught: java.io.IOException: Server returned HTTP response code: 403 for URL: (my url)

在任何浏览器中,这个网址都能正常工作,如果有任何关于如何解决这个问题的提示,我将非常感激。

jaql4c8m

jaql4c8m1#

HTTP代码403表示禁止客户端访问有效的URL。换句话说,服务器知道您不是通过Web浏览器发出请求。要绕过此限制,您需要在请求标头中指定User-Agent
例如:

def url = 'https://measurements.mobile-alerts.eu/Home/MeasurementDetails?deviceid=021B5594EAB5&vendorid=60122a8b-b343-49cb-918b-ad2cdd6dff16&appbundle=eu.mobile_alerts.mobilealerts&fromepoch=1674432000&toepoch=1674518400&from=23.01.2023%2000:00&to=24.01.2023%2000:00&command=refresh'
def res = url.toURL().getText(requestProperties:
        ['User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0'])
println res

您可以切换到其他有效的用户代理值。

相关问题