requests - nie działa proxy.

0

Witam, mam problem z użyciem serwerów proxy do wykonania zapytań. Nie wiem czemu wszystkie zapytania wykonują się z mojego IP, zamiast przez proxy.

import requests
url = 'http://mojnumerip.pl/'
with open('proxies.txt', 'r') as fp:
    for line in fp:
        line = line[:-1]
        reply = requests.get(url, proxies = {"https": 'https//: '+line+':443'})
        print('From '+line+':'+reply.text+'\n')

Plik proxies.txt:

188.166.174.214
202.70.80.233
31.3.145.189
188.130.255.17
115.127.75.18

0

Może dlatego że podałeś adres url z HTTP a proxy ustawiasz dla protokołu HTTPS?

0

@artur_waw: Ustawienie http, czyli:

import requests
url = 'http://mojnumerip.pl/'
with open('proxies.txt', 'r') as fp:
    for line in fp:
        line = line[:-1]
        reply = requests.get(url, proxies = {"http": 'http//: '+line+':80'})
        print('From '+line+':'+reply.text+'\n')

generuje błędy:

Traceback (most recent call last):
  File "C:\Program Files (x86)\lib\site-packages\urllib3-1.22-py3.6.egg\urllib3\connection.py", line 141, in _new_conn
    (self.host, self.port), self.timeout, **extra_kw)
  File "C:\Program Files (x86)\lib\site-packages\urllib3-1.22-py3.6.egg\urllib3\util\connection.py", line 60, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
  File "C:\Program Files (x86)\lib\socket.py", line 745, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11004] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\lib\site-packages\urllib3-1.22-py3.6.egg\urllib3\connectionpool.py", line 601, in urlopen
    chunked=chunked)
  File "C:\Program Files (x86)\lib\site-packages\urllib3-1.22-py3.6.egg\urllib3\connectionpool.py", line 357, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "C:\Program Files (x86)\lib\http\client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Program Files (x86)\lib\http\client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Program Files (x86)\lib\http\client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Program Files (x86)\lib\http\client.py", line 1026, in _send_output
    self.send(msg)
  File "C:\Program Files (x86)\lib\http\client.py", line 964, in send
    self.connect()
  File "C:\Program Files (x86)\lib\site-packages\urllib3-1.22-py3.6.egg\urllib3\connection.py", line 166, in connect
    conn = self._new_conn()
  File "C:\Program Files (x86)\lib\site-packages\urllib3-1.22-py3.6.egg\urllib3\connection.py", line 150, in _new_conn
    self, "Failed to establish a new connection: %s" % e)
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x03B17550>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\lib\site-packages\requests-2.18.4-py3.6.egg\requests\adapters.py", line 440, in send
    timeout=timeout
  File "C:\Program Files (x86)\lib\site-packages\urllib3-1.22-py3.6.egg\urllib3\connectionpool.py", line 639, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "C:\Program Files (x86)\lib\site-packages\urllib3-1.22-py3.6.egg\urllib3\util\retry.py", line 388, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='http', port=80): Max retries exceeded with url: http://mojnumerip.pl/ (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPConnection object at 0x03B17550>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed',)))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\AMB\projekty\Python\proxy_test.py", line 6, in <module>
    reply = requests.get(url, proxies = {"http": 'http//: '+line+':80'})
  File "C:\Program Files (x86)\lib\site-packages\requests-2.18.4-py3.6.egg\requests\api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Program Files (x86)\lib\site-packages\requests-2.18.4-py3.6.egg\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Program Files (x86)\lib\site-packages\requests-2.18.4-py3.6.egg\requests\sessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Program Files (x86)\lib\site-packages\requests-2.18.4-py3.6.egg\requests\sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)
  File "C:\Program Files (x86)\lib\site-packages\requests-2.18.4-py3.6.egg\requests\adapters.py", line 502, in send
    raise ProxyError(e, request=request)
requests.exceptions.ProxyError: HTTPConnectionPool(host='http', port=80): Max retries exceeded with url: http://mojnumerip.pl/ (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPConnection object at 0x03B17550>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed',)))
0

No dobra ale te twoje proxy to jeszcze muszą dzialać zeby to miało sens...

0

@Shalom: Sprawdzenie pingiem wystarczy, aby to ocenić? Bo wszystkie serwer tak sprawdzałem.

1

Oczywiście że nie. Ping mówi tylko czy taka maszyna stoi i odpowiada na ICMP, ale wcale nie mówi czy ta maszyna faktycznie ma postawiony jakiś server proxy.
Potrzebujesz IP tego proxy oraz port na którym działa (wcale nie musi to być 443!)
Masz pierwsze lepsze http proxy z google: 61.6.159.82:53281

Te twoje nie odpowiadają na porcie 443, więc albo proxy stoi na innym, albo proxy w ogóle tam nie ma.

1 użytkowników online, w tym zalogowanych: 0, gości: 1