我对stackoverflow的第一篇文章/问题,请耐心等待。
项目/目的:
我在pythonanywhere上有一个python脚本,它使用一个需要ip特定密钥的API get请求。但是,当脚本从pythonanywhere运行时,ip是动态的。我能够使用开放代理服务器并在请求标头中指定代理服务器的ip并使用代理服务器的ip生成API密钥。我认为更好的解决方案是在家中设置我自己的代理服务器。
尝试解决方案:
在ubuntu 16.04上运行tinyproxy,在8888上设置端口转发的路由器后面到ubuntu机器的内部ip。
tinyproxy配置设置如下:
港口8888
ConnectPort 443
ConnectPort 563
允许127.0.0.1
允许xx.xx.xx.xx(我的外部IP)
允许192.168..0.0 / 16
示例代码:
import requests
proxy_ip = 'xx.xx.xx.xx:8888' # my external ip
proxy = {
'http': proxy_ip,
'https': proxy_ip
}
r = requests.get('https://api.ipify.org',params={'format': 'json'},proxies=proxy)
my_proxied_ip = r.json()['ip']
print('my proxied ip: ' + my_proxied_ip)
问题:
如果我使用已知的开放代理ip:port ...工作正常
如果我xx.xx.xx.xx:8888 ...我得到:
requests.exceptions.ProxyError:HTTPSConnectionPool(host ='api.ipify.org',port = 443):使用url超出最大重试次数:/?format = json(引发
by ProxyError('无法连接到代理。',OSError('隧道连接失败:403访问被拒绝',)))
问题:
我正在寻找故障排除...似乎这是代理服务器(tinyproxy)设置的问题。或者还有其他我想念的东西?或者更好的解决方案/解决方法?