使用带密码验证代理的geopy

时间:2017-01-26 12:36:05

标签: python authentication proxy geopy

我正在尝试使用带有一组坐标的geopy,并且一切正常。

from geopy.geocoders import GoogleV3
# some coordinates as example
latitude, longitude = 24.47646, 85.3095
geolocator = GoogleV3()
location = geolocator.geocode('%s, %s' (latitude, longitude))
address = location.address
print address
# this would print something like 
Unnamed Road, Burhia Ahri, Jharkand 825406, India

我正在处理的环境需要经过身份验证的代理, 例如,让我们说像

proxy_address = 'http://proxy.tests.mydomain'
proxy_port = 3128
proxy_user = 'my_user'
proxy_pass = 'my_pass'

考虑到经过身份验证的代理要求使其正常工作,我查看了geopy github pagethe docs,即使提到了代理,也没有找到一个有效的网址。

似乎支持发送带有'proxies'参数的字典,但是没有任何地方提到的用户/密码验证变体。

有什么方法可以做到这样吗?

geolocator = GoogleV3(proxies={'http': proxy_address,
                               'password': my_user + my_pass})

编辑:拼写

1 个答案:

答案 0 :(得分:4)

对于那些可能遇到同样问题的人,我找到了解决我的问题的方法,包括使用os模块。

import os
def set_proxy():
    proxy_addr = 'http://{user}:{passwd}@{address}:{port}'.format(
        user='user_example', passwd='pass_example', 
        address='address_example', port=int('port_example'))
    os.environ['http_proxy'] = proxy_addr
    os.environ['https_proxy'] = proxy_addr

def unset_proxy():
    os.environ.pop('http_proxy')
    os.environ.pop('https_proxy')

set_proxy()
geolocator = GoogleV3()
location = geolocator.geocode('%s, %s' % (latitude, longitude), timeout=10)
address = location.address
unset_proxy()