<urlopen error Tunnel connection failed: 403 Forbidden> 在 pythonanywhere 服务器上使用 geopy 时出错

<urlopen error Tunnel connection failed: 403 Forbidden> error in using geopy on pythonanywhere servers

我正在尝试通过托管在 pythonanywhere 服务器上的我的网站使用 geopy 从用户位置坐标获取地址。
以下是我在 flask 中用于完成此操作的代码。

   from geopy.geocoders import Nominatim
   geolocator = Nominatim()
   @app.route('/location', methods = ['POST'])
   def location():
       latitude = request.json['latitude']
       longitude = request.json['longitude']
       location = geolocator.reverse(str(latitude)+ "," + str(longitude))
       send_email("myemail@example.com","Location:",str(location.address))

从你的问题很难判断,但可能是解码错误。

试试这个:

location = geolocator.reverse(str(latitude)+ "," + str(longitude), language="en")

这将确保结果是英文的,而不是一些外语。

PythonAnywhere 开发人员:PythonAnywhere 上的免费帐户只能访问一组有限的外部网站(白名单),以阻止人们在我们的网站上注册一次性免费帐户,然后使用它们来攻击其他网站。我的猜测是您的 GeoIP 查找正在尝试访问未列入白名单的站点。

我们通常很乐意将具有官方 public API 的网站添加到白名单,因此如果您可以追踪您的应用试图访问的网站并向我们提供API 文档的主机名和 link,我们可能可以在那里获取它,您的代码将起作用。

(或者,当然,您可以升级到付费帐户——因为我们可以将他们连接到真实的人,他们不受白名单的限制。:-)