繁体   English   中英

python请求SSH隧道作为代理

[英]python request ssh tunnel as proxy

是否可以将带有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': 'youremail@domain.com'  # 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行,数据= 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返回请求中('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)File” /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(request,** kwargs)中发送引发ProxyError(e,request = request)请求中的文件“ /usr/lib/python2.7/site-packages/requests-2.19.1-py2.7.egg/requests/adapters.py”,第507行。 exceptions.ProxyError:HTTPConnectionPool(host ='127.0.0.1',port = 80):URL超过了最大重试次数: http : //google.com/ (原因 由ProxyError('无法连接到代理。',NewConnectionError(':无法建立新的连接:[Errno 111]连接被拒绝',)))

我认为您需要在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(err,request = request)requests.exceptions.ConnectionError:('Connection aborted。',BadStatusLine(”“”,) )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM