2

Python 2.7.4 (x64 win7) で Dropbox アカウントに接続しようとしていますが、こちらのガイドがとても役に立ちました。ただし、プロキシの背後にいて、このコードでは実行できない場合。(私がプロキシの背後にいない場合、コードは自宅からうまく機能します)

dropbox /rest.pyで使用されている urllib2 と httplib をいじろうとしましたが、うまくいきませんでした。接続コードを変更する必要があることはわかっていますが、ソケットに対してこれを行う方法がわかりません。

dropbox/rest.py [行:99]

def create_connection(address):
    host, port = address
    err = None
    for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
        af, socktype, proto, canonname, sa = res
        sock = None
        try:
            sock = socket.socket(af, socktype, proto)
            sock.connect(sa)
            return sock

        except socket.error, _:
            err = _
            if sock is not None:
                sock.close()

    if err is not None:
        raise err
    else:
        raise socket.error("getaddrinfo returns an empty list")

私はいつもエラーを受け取ります: [Errno 10060] SocketError. ネットワークとポートについてはよくわかりませんが、ポート 3128 でプロキシに接続でき、ドロップボックスが 433 で待機することはわかっています。だから私はこのコードを見つけました:

proxyHost = 'www.myProxy.adress.com'
proxyPort = 3128
conn = httplib.HTTPConnection(proxyHost, proxyPort)
conn.request("POST", "https://www.google.com")

これは機能しますが、これをソケット接続に適応させるスキルがありません。特に紛らわしいのは、接続にproxyAdressを与え、接続に最終アドレスを与えることができる通常の方法と比較して、ヘッダーまたはどこかにRequestを書き込まなければならないことです。

これは、 Python用のSOCKSについて読んで試したときでしたが、ソケットコードをプロキシを設定できる新しい「 sockocket 」に簡単に置き換えることができませんでした。

import socks
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5,"www.myProxy.adress.com")
socket.socket = socks.socksocket
urllib.urlopen("https://www.google.com/")

rest.py の create_connection 関数をプロキシで動作するように変更する方法を教えてください。

4

1 に答える 1