gpt4 book ai didi

使用 pysftp 通过 HTTP 代理进行 Python 连接

转载 作者:可可西里 更新时间:2023-11-01 14:23:24 26 4
gpt4 key购买 nike

目前,我正在使用 Python subprocess.POPEN 和 PuTTY psftp.exe 进行 SFTP 传输。

它可以工作,但不是很干净,也不是很便携。

我想使用 Python pysftp 重现相同的行为,但我不知道在哪里输入所有参数。我在 PuTTY 中有以下配置:

  • 服务器 IP : 123.123.123.255
  • 服务器端口:22
  • 连接类型:SSH
  • 自动登录用户名:我的用户
  • 代理类型:HTTP
  • 代理主机名:gw.proxy.fr
  • 代理端口:1234
  • 代理用户名:ProxyUser
  • 代理密码:ProxyPass

我应该如何在 pysftp 中输入所有这些参数以便我可以检索我的文件?

编辑:使用 Martin Prikryl 的回答,我发现了一些新的东西要探索。如果我理解得很好,我需要使用套接字。输入我需要的所有信息时我仍然有一些问题。

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
proxy = ("gw.proxy.fr",1234)
sock.connect(proxy)
target=("123.123.123.255",23)
cmd_connect = "CONNECT {}:{} HTTP/1.1\r\n\r\n".format(*target)
sock.sendall(cmd_connect)

我从中收到的响应是 HTTP/1.0 407 Proxy Authentication Required,这很正常,因为我没有在任何地方使用 Proxy 身份验证信息。那么,您知道我如何使用它们并将它们输入到我的套接字中吗?

最佳答案

我不认为 pysftp 支持代理。尽管请注意 pysftp 只是 Paramiko library 的包装器,它确实支持代理。

所以我建议你直接使用Paramiko。

首先请参阅 How to ssh over HTTP proxy in Python Paramiko? ,特别是 answer by @tintin .


要向代理进行身份验证,在 CONNECT 之后命令,添加一个Proxy-Authorization标题如:

Proxy-Authorization: Basic <credentials>

哪里<credentials>是 base-64 编码的字符串 username:password .

auth = 'Basic ' + base64.encodebytes("username:password".encode()).decode()
args = ("123.123.123.255", 23, auth)
cmd_connect = "CONNECT {}:{} HTTP/1.1\r\nProxy-Authorization: {}\r\n\r\n".format(*args)

关于使用 pysftp 通过 HTTP 代理进行 Python 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36004664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com