首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可以用Python的请求库设置代理链吗?

可以用Python的请求库设置代理链吗?
EN

Stack Overflow用户
提问于 2018-06-17 03:37:22
回答 3查看 4.8K关注 0票数 0

以下是标准情况:一家公司的安全策略要求其所有员工使用公司的代理服务器(需要授权)来获取任何https资源。

为了通过Python的解释器成功地使用任何互联网连接,我必须手动:

代码语言:javascript
复制
set HTTP_PROXY=http://<login>:<pass>@<proxy>:<port>

如果我不这样做,我会得到以下错误:

所以这里的问题是:有没有可能连接到另一个代理服务器(在我以某种方式连接到公司的代理服务器之后),以便做一些测试压力工作,而不会危及我公司的IP被禁止?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-17 03:45:26

您可以在代码级别实现您的逻辑。HTTP_PROXY环境变量不是指定代理的唯一方法。使用proxies参数,就像它指定的documentation一样

代码语言:javascript
复制
import requests

proxies = {
  'http': 'http://10.10.1.10:3128',
  'https': 'http://10.10.1.10:1080',
}

requests.get('http://example.org', proxies=proxies)

因此,您可以处理这些异常(我指的是ProxyError),以防更改参数中的代理

票数 0
EN

Stack Overflow用户

发布于 2020-01-04 16:47:26

我认为代理链是不可能的。如果可能,那么给我们一些工作代码。我试过了,但后来我明白了这很愚蠢。但当我看到proxychains终端应用程序是如何工作的时候,我仍然迷失了它。

我的代码:

代码语言:javascript
复制
import socket

def main():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(('182.52.22.58', 8080))
   ''' s.connect(('61.7.128.94' , 8080))'''
    request = b"CONNECT 146.88.51.238:80 HTTP/1.1\n\n"
    s.send(request)
    print('hi' + s.recv(4096).decode())
    request = b"GET google.com HTTP/1.1\n\n"
    s.send(request)
    print(s.recv(4096).decode())

main()
票数 0
EN

Stack Overflow用户

发布于 2021-08-30 06:33:07

如果您想通过代理列表发送请求(通过代理列表或socks列表的代理“链”),您可以尝试此代码。

代码语言:javascript
复制
import request, requests, urllib2
def proxylist(): 
    global proxies
    proxies=[]
    out_file = str(input("Enter the proxylist/proxychains.txt that u have: ")) # if u have an own list
    if out_file == "":
        out_file = "proxychains.txt"# as default if u press enter
    current = 0
    proxies = open(out_file).readlines()
    numthreads()

import mechanize, urllib, libpcap2, development
def request():
    global request
    request=[]
    if current < len(proxies):
            proxy = proxies[current].strip().split(':')
        else:
            proxy = random.choice(proxies).strip().split(":")
        go.wait()
        while True:
            try:
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # stream through list
                s.connect((str(proxy[0]), int(proxy[0]))) #if u are using socks u change this 
                s.send(str.encode(request)) #str & strip add strip if needed only
                print ("Request sent from " + str(proxy[0]+":"+proxy[1]) + " @", self.counter) #displays the ip u sent from 
                try:
                    for y in range(multiple):
                        s.send(str.encode(request))
                except:
                    s.close()
            except:
                s.close()
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50891138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档