python请求ssh隧道作为代理

问题描述 投票:0回答:1

是否可以将ssh隧道的python请求用作代理?我怎样才能做到这一点?已经尝试过但没有成功:

from sshtunnel import SSHTunnelForwarder
import requests as r
from bs4 import BeautifulSoup as soup

server = SSHTunnelForwarder(
        'sship',
        ssh_username="XXXX",
        ssh_password="XXXX",
        remote_bind_address=('127.0.0.1', 8080)
    )

server.start()

print(server.local_bind_port)


proxies = {
    "http": "http://127.0.0.1:8080",
    }

url = 'http://www.google.com'
headers = {
    'User-Agent': 'My User Agent 1.0',
    'From': '[email protected]'  # This is another valid field
}

data = r.get(url, headers=headers , proxies = proxies)
page_data = soup(data.text , 'html.parser')

print page_data

这是我得到的错误:

37657回溯(最近一次调用最后一次):文件“ssh.py”,第27行,在data = r.get(url,headers = headers,proxies = proxies)文件“/usr/lib/python2.7/site-packages /requests-2.19.1-py2.7.egg/requests/api.py“,第72行,在获取返回请求中('get',url,params = params,** kwargs)文件”/ usr / lib / python2 .7 / site-packages / requests-2.19.1-py2.7.egg / requests / api.py“,第58行,请求返回session.request(method = method,url = url,** kwargs)文件” /usr/lib/python2.7/site-packages/requests-2.19.1-py2.7.egg/requests/sessions.py“,第512行,请求resp = self.send(prep,** send_kwargs)文件“/usr/lib/python2.7/site-packages/requests-2.19.1-py2.7.egg/requests/sessions.py”,第622行,发送r = adapter.send(请求,** kwargs)文件“/usr/lib/python2.7/site-packages/requests-2.19.1-py2.7.egg/requests/adapters.py”,第507行,发送提升ProxyError(e,请求=请求)请求。 exceptions.ProxyError:HTTPConnectionPool(host ='127.0.0.1',port = 80):使用url:http://google.com/超出最大重试次数(由Pro引起) xyError('无法连接到代理。',NewConnectionError(':无法建立新连接:[Errno 111]连接被拒绝',)))

python ssh proxy python-requests tunnel
1个回答
0
投票

我认为您需要在SSHTunnel中显式设置本地绑定地址,或者为您的代理设置端口,如下所示:

`
https_tunnel.start()
    proxies = {
        #'http': 'http://localhost:{}'.format(str(http_tunnel.local_bind_port)),
        'https': 'https://localhost:{}'.format(str(https_tunnel.local_bind_port))
    }
`

其中https_tunnel是SSHTunnelForwarder的一个实例。我已经这样做了,但是我实际发送GET请求时遇到错误:

python2.7 / site-packages / requests / adapters.py“,第490行,发送引发ConnectionError(错误,请求=请求)requests.exceptions.ConnectionError :('Connection aborted。',BadStatusLine(”''“,) )

© www.soinside.com 2019 - 2024. All rights reserved.