pypi / support

Issue tracker for support requests related to using https://pypi.org
90 stars 47 forks source link

Cannot install anything using pip from IRAN #2751

Open NimaDolatabadi opened 1 year ago

NimaDolatabadi commented 1 year ago

My Platform

I am using Ubuntu 22.04,,Installed anaconda and using pip to install the packages. the download speed was reduced to 20KB/S and now it gives connectivity error. I have tried with anything possible, wifi, celular, data. lan. any company, just anything

Collecting opencv-python
  Downloading opencv_python-4.7.0.72-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (61.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.5/61.8 MB 10.7 kB/s eta 1:35:06
ERROR: Exception:
Traceback (most recent call last):
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py", line 438, in _error_catcher
    yield
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py", line 561, in read
    data = self._fp_read(amt) if not fp_closed else b""
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py", line 527, in _fp_read
    return self._fp.read(amt) if amt is not None else self._fp.read()
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_vendor/cachecontrol/filewrapper.py", line 90, in read
    data = self.__fp.read(amt)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/http/client.py", line 465, in read
    s = self.fp.read(amt)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/socket.py", line 705, in readinto
    return self._sock.recv_into(b)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/ssl.py", line 1274, in recv_into
    return self.read(nbytes, buffer)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/ssl.py", line 1130, in read
    return self._sslobj.read(len, buffer)
TimeoutError: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/cli/base_command.py", line 160, in exc_logging_wrapper
    status = run_func(*args)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/cli/req_command.py", line 247, in wrapper
    return func(self, options, args)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/commands/install.py", line 419, in run
    requirement_set = resolver.resolve(
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 92, in resolve
    result = self._result = resolver.resolve(
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py", line 481, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py", line 348, in resolve
    self._add_to_criteria(self.state.criteria, r, parent=None)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py", line 172, in _add_to_criteria
    if not criterion.candidates:
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__
    return bool(self._sequence)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__
    return any(self)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built
    candidate = func()
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 206, in _make_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 297, in __init__
    super().__init__(
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 162, in __init__
    self.dist = self._prepare()
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 231, in _prepare
    dist = self._prepare_distribution()
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 308, in _prepare_distribution
    return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/operations/prepare.py", line 491, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/operations/prepare.py", line 536, in _prepare_linked_requirement
    local_file = unpack_url(
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/operations/prepare.py", line 166, in unpack_url
    file = get_http_url(
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/operations/prepare.py", line 107, in get_http_url
    from_path, content_type = download(link, temp_dir.path)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/network/download.py", line 147, in __call__
    for chunk in chunks:
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py", line 53, in _rich_progress_bar
    for chunk in iterable:
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_internal/network/utils.py", line 63, in response_chunks
    for chunk in response.raw.stream(
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py", line 622, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py", line 560, in read
    with self._error_catcher():
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/nima/src/Conda/envs/ipml/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py", line 443, in _error_catcher
    raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

Fastly Debug

the site given: https://fastly-debug.com/ cannot even be loaded. i live in iran we have extreme limitation over internet and vpn so if there is any other way to do the job please tell me.

DNS Resolution

$ dig pypi.org A
; <<>> DiG 9.18.12-0ubuntu0.22.04.1-Ubuntu <<>> pypi.org A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4311
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;pypi.org.          IN  A

;; ANSWER SECTION:
pypi.org.       3715    IN  A   151.101.192.223
pypi.org.       3715    IN  A   151.101.0.223
pypi.org.       3715    IN  A   151.101.128.223
pypi.org.       3715    IN  A   151.101.64.223

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Apr 11 16:12:21 +0330 2023
;; MSG SIZE  rcvd: 101
$ dig pypi.org AAAA
; <<>> DiG 9.18.12-0ubuntu0.22.04.1-Ubuntu <<>> pypi.org AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49043
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;pypi.org.          IN  AAAA

;; ANSWER SECTION:
pypi.org.       3673    IN  AAAA    2a04:4e42::223
pypi.org.       3673    IN  AAAA    2a04:4e42:200::223
pypi.org.       3673    IN  AAAA    2a04:4e42:400::223
pypi.org.       3673    IN  AAAA    2a04:4e42:600::223

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Apr 11 16:13:03 +0330 2023
;; MSG SIZE  rcvd: 149
$ dig files.pythonhosted.org A
; <<>> DiG 9.18.12-0ubuntu0.22.04.1-Ubuntu <<>> files.pythonhosted.org A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62727
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;files.pythonhosted.org.        IN  A

;; ANSWER SECTION:
files.pythonhosted.org. 12327   IN  CNAME   dualstack.r.ssl.global.fastly.net.
dualstack.r.ssl.global.fastly.net. 23 IN A  151.101.1.63
dualstack.r.ssl.global.fastly.net. 23 IN A  151.101.65.63
dualstack.r.ssl.global.fastly.net. 23 IN A  151.101.129.63
dualstack.r.ssl.global.fastly.net. 23 IN A  151.101.193.63

;; Query time: 95 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Apr 11 16:13:23 +0330 2023
;; MSG SIZE  rcvd: 162
$ dig files.pythonhosted.org AAAA
; <<>> DiG 9.18.12-0ubuntu0.22.04.1-Ubuntu <<>> files.pythonhosted.org AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30908
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;files.pythonhosted.org.        IN  AAAA

;; ANSWER SECTION:
files.pythonhosted.org. 4   IN  CNAME   dualstack.r.ssl.global.fastly.net.
dualstack.r.ssl.global.fastly.net. 30 IN AAAA   2a04:4e42:400::319
dualstack.r.ssl.global.fastly.net. 30 IN AAAA   2a04:4e42:600::319
dualstack.r.ssl.global.fastly.net. 30 IN AAAA   2a04:4e42::319
dualstack.r.ssl.global.fastly.net. 30 IN AAAA   2a04:4e42:200::319

;; ADDITIONAL SECTION:
dualstack.r.ssl.global.fastly.net. 4 IN A   151.101.65.63
dualstack.r.ssl.global.fastly.net. 4 IN A   151.101.1.63
dualstack.r.ssl.global.fastly.net. 4 IN A   151.101.129.63
dualstack.r.ssl.global.fastly.net. 4 IN A   151.101.193.63

;; Query time: 168 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Apr 11 16:13:42 +0330 2023
;; MSG SIZE  rcvd: 274

Traceroutes / IPv4

$ traceroute pypi.org
traceroute to pypi.org (151.101.128.223), 30 hops max, 60 byte packets
 1  _gateway (192.168.1.1)  2.398 ms  2.600 ms  2.591 ms
 2  nas1.petiak.com (217.170.253.131)  39.961 ms  39.987 ms  39.996 ms
 3  core.petiak.com (217.170.253.130)  40.085 ms  40.168 ms  46.358 ms
 4  * * *
 5  192.168.0.254 (192.168.0.254)  56.579 ms  61.628 ms  61.649 ms
 6  10.10.53.93 (10.10.53.93)  65.203 ms  38.162 ms  31.785 ms
 7  * * *
 8  et-10-1-2-0.ffttr6.frankfurt.opentransit.net (193.251.154.103)  124.971 ms 85.132.90.165 (85.132.90.165)  61.310 ms  61.347 ms
 9  10.50.10.49 (10.50.10.49)  61.285 ms  61.257 ms *
10  * mskn15ra.transtelecom.net (188.43.209.206)  105.990 ms  105.965 ms
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
$ traceroute files.pythonhosted.org
traceroute to files.pythonhosted.org (151.101.1.63), 30 hops max, 60 byte packets
 1  _gateway (192.168.1.1)  1.365 ms  1.357 ms  1.814 ms
 2  nas1.petiak.com (217.170.253.131)  36.818 ms  41.021 ms  41.685 ms
 3  core.petiak.com (217.170.253.130)  41.723 ms  41.920 ms  41.942 ms
 4  * * *
 5  192.168.0.254 (192.168.0.254)  85.521 ms  85.542 ms  85.530 ms
 6  10.10.53.93 (10.10.53.93)  85.505 ms  35.769 ms  38.186 ms
 7  * * *
 8  10.21.212.10 (10.21.212.10)  45.599 ms  45.614 ms *
 9  10.202.4.76 (10.202.4.76)  59.711 ms  60.068 ms  59.679 ms
10  10.202.6.165 (10.202.6.165)  90.987 ms  90.921 ms  57.286 ms
11  10.202.6.132 (10.202.6.132)  54.833 ms  86.164 ms  86.097 ms
12  172.16.2.22 (172.16.2.22)  182.582 ms  190.200 ms  190.145 ms
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

Traceroutes / IPv6 (If available)

$ traceroute6 pypi.org
traceroute to pypi.org (2a04:4e42::223), 30 hops max, 80 byte packets
connect: Network is unreachable
$ traceroute6 files.pythonhosted.org
traceroute to files.pythonhosted.org (2a04:4e42:600::319), 30 hops max, 80 byte packets
connect: Network is unreachable

HTTPS Requests / IPv4

$ curl -vvv -I --ipv4 https://pypi.org/pypi/pip/json
*   Trying 151.101.64.223:443...
* Connected to pypi.org (151.101.64.223) port 443 (#0)
* ALPN: offers h2
* ALPN: offers http/1.1
*  CAfile: /home/nima/src/Conda/ssl/cacert.pem
*  CApath: none
* [CONN-0-0][CF-SSL] TLSv1.3 (OUT), TLS handshake, Client hello (1):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Server hello (2):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Certificate (11):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, CERT verify (15):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Finished (20):
* [CONN-0-0][CF-SSL] TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* [CONN-0-0][CF-SSL] TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=pypi.org
*  start date: Jul 26 19:45:14 2022 GMT
*  expire date: Aug 27 19:45:13 2023 GMT
*  subjectAltName: host "pypi.org" matched cert's "pypi.org"
*  issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Atlas R3 DV TLS CA 2022 Q3
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* h2h3 [:method: HEAD]
* h2h3 [:path: /pypi/pip/json]
* h2h3 [:scheme: https]
* h2h3 [:authority: pypi.org]
* h2h3 [user-agent: curl/7.87.0]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x1e8aeb0)
> HEAD /pypi/pip/json HTTP/2
> Host: pypi.org
> user-agent: curl/7.87.0
> accept: */*
> 
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/2 200 
HTTP/2 200 
< access-control-allow-headers: Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since
access-control-allow-headers: Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since
< access-control-allow-methods: GET
access-control-allow-methods: GET
< access-control-allow-origin: *
access-control-allow-origin: *
< access-control-expose-headers: X-PyPI-Last-Serial
access-control-expose-headers: X-PyPI-Last-Serial
< access-control-max-age: 86400
access-control-max-age: 86400
< cache-control: max-age=900, public
cache-control: max-age=900, public
< content-security-policy: base-uri 'self'; block-all-mixed-content; connect-src 'self' https://api.github.com/repos/ https://api.github.com/search/issues https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com fastly-insights.com *.fastly-insights.com *.ethicalads.io https://api.pwnedpasswords.com https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/sre/mathmaps/ https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; form-action 'self' https://checkout.stripe.com; frame-ancestors 'none'; frame-src 'none'; img-src 'self' https://warehouse-camo.ingress.cmh1.psfhosted.org/ https://*.google-analytics.com https://*.googletagmanager.com *.fastly-insights.com *.ethicalads.io; script-src 'self' https://*.googletagmanager.com https://www.google-analytics.com https://ssl.google-analytics.com *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0=' https://cdn.jsdelivr.net/npm/mathjax@3.2.2/ 'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=' 'sha256-0POaN8stWYQxhzjKS+/eOfbbJ/u4YHO5ZagJvLpMypo='; style-src 'self' fonts.googleapis.com *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE=' 'sha256-mQyxHEuwZJqpxCw3SLmc4YOySNKXunyu2Oiz1r3/wAE=' 'sha256-OCf+kv5Asiwp++8PIevKBYSgnNLNUZvxAp4a7wMLuKA=' 'sha256-h5LOiLhk6wiJrGsG5ItM0KimwzWQH/yAcmoJDJL//bY='; worker-src *.fastly-insights.com
content-security-policy: base-uri 'self'; block-all-mixed-content; connect-src 'self' https://api.github.com/repos/ https://api.github.com/search/issues https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com fastly-insights.com *.fastly-insights.com *.ethicalads.io https://api.pwnedpasswords.com https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/sre/mathmaps/ https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; form-action 'self' https://checkout.stripe.com; frame-ancestors 'none'; frame-src 'none'; img-src 'self' https://warehouse-camo.ingress.cmh1.psfhosted.org/ https://*.google-analytics.com https://*.googletagmanager.com *.fastly-insights.com *.ethicalads.io; script-src 'self' https://*.googletagmanager.com https://www.google-analytics.com https://ssl.google-analytics.com *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0=' https://cdn.jsdelivr.net/npm/mathjax@3.2.2/ 'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=' 'sha256-0POaN8stWYQxhzjKS+/eOfbbJ/u4YHO5ZagJvLpMypo='; style-src 'self' fonts.googleapis.com *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE=' 'sha256-mQyxHEuwZJqpxCw3SLmc4YOySNKXunyu2Oiz1r3/wAE=' 'sha256-OCf+kv5Asiwp++8PIevKBYSgnNLNUZvxAp4a7wMLuKA=' 'sha256-h5LOiLhk6wiJrGsG5ItM0KimwzWQH/yAcmoJDJL//bY='; worker-src *.fastly-insights.com
< content-type: application/json
content-type: application/json
< etag: "W0oskKR2tVn2MPoHmMKBRQ"
etag: "W0oskKR2tVn2MPoHmMKBRQ"
< referrer-policy: origin-when-cross-origin
referrer-policy: origin-when-cross-origin
< server: nginx/1.13.9
server: nginx/1.13.9
< x-pypi-last-serial: 16906393
x-pypi-last-serial: 16906393
< accept-ranges: bytes
accept-ranges: bytes
< date: Tue, 11 Apr 2023 12:48:29 GMT
date: Tue, 11 Apr 2023 12:48:29 GMT
< x-served-by: cache-iad-kcgs7200098-IAD, cache-fra-eddf8230034-FRA
x-served-by: cache-iad-kcgs7200098-IAD, cache-fra-eddf8230034-FRA
< x-cache: HIT, HIT
x-cache: HIT, HIT
< x-cache-hits: 699648, 1
x-cache-hits: 699648, 1
< x-timer: S1681217309.379796,VS0,VE1
x-timer: S1681217309.379796,VS0,VE1
< vary: Accept-Encoding, Accept-Encoding
vary: Accept-Encoding, Accept-Encoding
< strict-transport-security: max-age=31536000; includeSubDomains; preload
strict-transport-security: max-age=31536000; includeSubDomains; preload
< x-frame-options: deny
x-frame-options: deny
< x-xss-protection: 1; mode=block
x-xss-protection: 1; mode=block
< x-content-type-options: nosniff
x-content-type-options: nosniff
< x-permitted-cross-domain-policies: none
x-permitted-cross-domain-policies: none
< content-length: 169747
content-length: 169747

< 
* Connection #0 to host pypi.org left intact
$ curl -vvv -I --ipv4 https://files.pythonhosted.org/packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz
11a57446f08259dee8f02/pip-10.0.1.tar.gz
*   Trying 151.101.129.63:443...
* Connected to files.pythonhosted.org (151.101.129.63) port 443 (#0)
* ALPN: offers h2
* ALPN: offers http/1.1
*  CAfile: /home/nima/src/Conda/ssl/cacert.pem
*  CApath: none
* [CONN-0-0][CF-SSL] TLSv1.3 (OUT), TLS handshake, Client hello (1):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Server hello (2):
* [CONN-0-0][CF-SSL] TLSv1.2 (IN), TLS handshake, Certificate (11):
* [CONN-0-0][CF-SSL] TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* [CONN-0-0][CF-SSL] TLSv1.2 (IN), TLS handshake, Server finished (14):
* [CONN-0-0][CF-SSL] TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* [CONN-0-0][CF-SSL] TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* [CONN-0-0][CF-SSL] TLSv1.2 (OUT), TLS handshake, Finished (20):
* [CONN-0-0][CF-SSL] TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=*.pythonhosted.org
*  start date: Sep 27 20:45:08 2022 GMT
*  expire date: Oct 29 20:45:07 2023 GMT
*  subjectAltName: host "files.pythonhosted.org" matched cert's "*.pythonhosted.org"
*  issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Atlas R3 DV TLS CA 2022 Q3
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* h2h3 [:method: HEAD]
* h2h3 [:path: /packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz]
* h2h3 [:scheme: https]
* h2h3 [:authority: files.pythonhosted.org]
* h2h3 [user-agent: curl/7.87.0]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x1322eb0)
> HEAD /packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz HTTP/2
> Host: files.pythonhosted.org
> user-agent: curl/7.87.0
> accept: */*
> 
< HTTP/2 200 
HTTP/2 200 
< last-modified: Wed, 26 Feb 2020 17:47:37 GMT
last-modified: Wed, 26 Feb 2020 17:47:37 GMT
< etag: "83a177756e2c801d0b3a6f7b0d4f3f7e"
etag: "83a177756e2c801d0b3a6f7b0d4f3f7e"
< x-goog-generation: 1582739257438329
x-goog-generation: 1582739257438329
< x-goog-metageneration: 1
x-goog-metageneration: 1
< x-goog-stored-content-encoding: identity
x-goog-stored-content-encoding: identity
< x-goog-stored-content-length: 1246072
x-goog-stored-content-length: 1246072
< content-type: binary/octet-stream
content-type: binary/octet-stream
< x-goog-hash: crc32c=Om2N1A==
x-goog-hash: crc32c=Om2N1A==
< x-goog-hash: md5=g6F3dW4sgB0LOm97DU8/fg==
x-goog-hash: md5=g6F3dW4sgB0LOm97DU8/fg==
< server: UploadServer
server: UploadServer
< cache-control: max-age=365000000, immutable, public
cache-control: max-age=365000000, immutable, public
< accept-ranges: bytes
accept-ranges: bytes
< date: Tue, 11 Apr 2023 12:49:02 GMT
date: Tue, 11 Apr 2023 12:49:02 GMT
< age: 787669
age: 787669
< x-served-by: cache-bfi-krnt7300038-BFI, cache-fra-eddf8230135-FRA
x-served-by: cache-bfi-krnt7300038-BFI, cache-fra-eddf8230135-FRA
< x-cache: HIT, HIT
x-cache: HIT, HIT
< x-cache-hits: 1, 1
x-cache-hits: 1, 1
< x-timer: S1681217342.183189,VS0,VE4
x-timer: S1681217342.183189,VS0,VE4
< strict-transport-security: max-age=31536000; includeSubDomains; preload
strict-transport-security: max-age=31536000; includeSubDomains; preload
< x-frame-options: deny
x-frame-options: deny
< x-xss-protection: 1; mode=block
x-xss-protection: 1; mode=block
< x-content-type-options: nosniff
x-content-type-options: nosniff
< x-permitted-cross-domain-policies: none
x-permitted-cross-domain-policies: none
< x-robots-header: noindex
x-robots-header: noindex
< x-pypi-file-python-version: source
x-pypi-file-python-version: source
< x-pypi-file-version: 10.0.1
x-pypi-file-version: 10.0.1
< x-pypi-file-package-type: sdist
x-pypi-file-package-type: sdist
< x-pypi-file-project: pip
x-pypi-file-project: pip
< content-length: 1246072
content-length: 1246072

< 
* Connection #0 to host files.pythonhosted.org left intact

HTTPS Requests / IPv6 (If available)

$ curl -vvv -I --ipv6 https://pypi.org/pypi/pip/json
*   Trying [2a04:4e42:400::223]:443...
* Immediate connect fail for 2a04:4e42:400::223: Network is unreachable
*   Trying [2a04:4e42:200::223]:443...
* Immediate connect fail for 2a04:4e42:200::223: Network is unreachable
*   Trying [2a04:4e42:600::223]:443...
* Immediate connect fail for 2a04:4e42:600::223: Network is unreachable
*   Trying [2a04:4e42::223]:443...
* Immediate connect fail for 2a04:4e42::223: Network is unreachable
* Closing connection 0
curl: (7) Couldn't connect to server
$ curl -vvv -I --ipv6 https://files.pythonhosted.org/packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz
11a57446f08259dee8f02/pip-10.0.1.tar.gz
*   Trying [2a04:4e42::319]:443...
* Immediate connect fail for 2a04:4e42::319: Network is unreachable
*   Trying [2a04:4e42:200::319]:443...
* Immediate connect fail for 2a04:4e42:200::319: Network is unreachable
*   Trying [2a04:4e42:400::319]:443...
* Immediate connect fail for 2a04:4e42:400::319: Network is unreachable
*   Trying [2a04:4e42:600::319]:443...
* Immediate connect fail for 2a04:4e42:600::319: Network is unreachable
* Closing connection 0
curl: (7) Couldn't connect to server

TLS Debug / IPv4

$ echo -n | openssl s_client -4 -connect pypi.org:443
CONNECTED(00000003)
depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2022 Q3
verify return:1
depth=0 CN = pypi.org
verify return:1
---
Certificate chain
 0 s:CN = pypi.org
   i:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2022 Q3
 1 s:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2022 Q3
   i:OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGfzCCBWegAwIBAgIQAe6p6b6zdP9u5myWWPuk2zANBgkqhkiG9w0BAQsFADBY
MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEuMCwGA1UE
AxMlR2xvYmFsU2lnbiBBdGxhcyBSMyBEViBUTFMgQ0EgMjAyMiBRMzAeFw0yMjA3
MjYxOTQ1MTRaFw0yMzA4MjcxOTQ1MTNaMBMxETAPBgNVBAMMCHB5cGkub3JnMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8o44EkMKZTdtsEtjJs1caeZE
n3YE0fNgO0H7PxbBoNsWFYtupoRz1FRdnQLThGOVg53Qo/nhBRQAxvsX4aOxk15N
PIC8Irz+XYahv4cL9lTa+oQkQINgyG7G4ohXKZDRpTnRZMOCh+VyYANq0Ou5G855
tZv1Q2iFtvxXzr2VGLZTSbqZCemaO0zBaVxSTOLrMbRDUmRh3nnCQIq61Agg+6oe
tT7OBmGQNyG998iA7/R4DcNrFFw1zM64c24v6xM+3Lq3yx6x6OCbFuxB6waJuBUh
eP8OUIlaPl6IYzKWPHZ8p5iKIfTYo4iGKAwdJF241sivWVXngxezS3M+kGSUdQID
AQABo4IDiDCCA4QwPgYDVR0RBDcwNYIIcHlwaS5vcmeCCioucHlwaS5vcmeCDHd3
dy5weXBpLm9yZ4IPZG9uYXRlLnB5cGkub3JnMA4GA1UdDwEB/wQEAwIFoDAdBgNV
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFEfow+xITtwxOc96
M4M5FTpT5iC1MFcGA1UdIARQME4wCAYGZ4EMAQIBMEIGCisGAQQBoDIKAQMwNDAy
BggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9y
eS8wDAYDVR0TAQH/BAIwADCBngYIKwYBBQUHAQEEgZEwgY4wQAYIKwYBBQUHMAGG
NGh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2NhL2dzYXRsYXNyM2R2dGxzY2Ey
MDIycTMwSgYIKwYBBQUHMAKGPmh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20v
Y2FjZXJ0L2dzYXRsYXNyM2R2dGxzY2EyMDIycTMuY3J0MB8GA1UdIwQYMBaAFPqR
OWOa+60QJOW+tbnaq9nERmmrMEgGA1UdHwRBMD8wPaA7oDmGN2h0dHA6Ly9jcmwu
Z2xvYmFsc2lnbi5jb20vY2EvZ3NhdGxhc3IzZHZ0bHNjYTIwMjJxMy5jcmwwggF/
BgorBgEEAdZ5AgQCBIIBbwSCAWsBaQB2AK33vvp8/xDIi509nB4+GGq0Zyldz7EM
JMqFhjTr3IKKAAABgjwKxXoAAAQDAEcwRQIgS1S5S5j9RshJIiN7ohMvHQk+fRp/
TLACc1FuxFzukoMCIQC0kSLRxGVusXukcMXlu3VDzTyUvndArct7LrNOWX7JlAB2
ALNzdwfhhFD4Y4bWBancEQlKeS2xZwwLh9zwAw55NqWaAAABgjwKxfwAAAQDAEcw
RQIhAL//2NQ63lIVXHxrrS7jRyXmXUQvTPBtc2PYdvkCv15oAiAKIIX1AJ6GZmbn
coKYKkpxQYHFIS9s33UpweHQunIdCQB3AOg+0No+9QY1MudXKLyJa8kD08vREWvs
62nhd31tBr1uAAABgjwKxagAAAQDAEgwRgIhAJjY8dfyDTwnMdvkpQQecFFMgRIJ
/s3mdaYLbdh0IkRQAiEAjT5F9vfckv8llfCXjUzVBPSvqu3aLSXVklpkHHgGX4sw
DQYJKoZIhvcNAQELBQADggEBABk0SsR02kYtjwI1v9IId8htcmA+zyzqGOIWwvsj
10FGzi8BoRbmA7KiT+Yvh2CFuReOj8RNerv/BrS+PVgbHiwkh8GP2ETq8OPiXlUP
6hfSVyK5EMZBZ8Gn+JVCWrD6aUae7W53iFdZB1Bn1c4xTdBJy3eu/aYLtYHPH24p
3MQO24HcCGkn/LXGq005RMNdlTPJV/tymae2iUp5nGOy8MNkZq8xYHkK+YKue8mG
WvWdkdJ3fmYeKCXDVtvwKGk/1BQaS9lS50JLJTDJqAH957cvpyVnyOs41g19LwkZ
6MWFGfWo6Pem+d2GqZUs3faIFqmCS0lp7vHJ6e9nBuPi2do=
-----END CERTIFICATE-----
subject=CN = pypi.org

issuer=C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2022 Q3

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3387 bytes and written 374 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_128_GCM_SHA256
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_128_GCM_SHA256
    Session-ID: 192B5FAD2FF35BE10D106D5B94C654BB8ECA547E953F5B054276520AE2F1C496
    Session-ID-ctx: 
    Resumption PSK: 72C12774C39F5A8B7E49C50E55CD454903A365028945AE321CAFEB4A05320BDE
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 3600 (seconds)
    TLS session ticket:
    0000 - a6 47 6d 14 d0 6e b7 57-32 5d 99 b7 a0 69 83 88   .Gm..n.W2]...i..
    0010 - ab 3e 47 1d 56 8a 49 3a-d1 30 8e 3b 4b a0 6c c6   .>G.V.I:.0.;K.l.
    0020 - 7f 7f 6b cc 1f b1 f3 f0-7f 4b bc e0 91 cf 31 36   ..k......K....16
    0030 - 6f 5e 8a 16 42 96 8d 1b-ef 15 7d 0e 69 32 0e ab   o^..B.....}.i2..
    0040 - 7b ef 3a 5e a9 6a d0 12-66 4c 91 21 2a 47 e9 f7   {.:^.j..fL.!*G..
    0050 - 86 2f c3 ec f9 9a 47 a5-b0 82 8d c0 b2 ed 17 3a   ./....G........:
    0060 - f3 c2 75 99 e4 b6 be 57-93 a3 d5 bf 75 9c 71 78   ..u....W....u.qx
    0070 - ba 82 6d 29 10 12 08 51-8a 5b f9 0f 1c 9b c2 a0   ..m)...Q.[......
    0080 - 54 09 a0 fc 63 ef 4a 0f-3f e3 58 cb b2 bc 72 53   T...c.J.?.X...rS

    Start Time: 1681217452
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
DONE
$ echo -n | openssl s_client -4 -connect files.pythonhosted.org:443
CONNECTED(00000003)
depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2022 Q3
verify return:1
depth=0 CN = *.pythonhosted.org
verify return:1
---
Certificate chain
 0 s:CN = *.pythonhosted.org
   i:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2022 Q3
 1 s:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2022 Q3
   i:OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGZTCCBU2gAwIBAgIQAZ4c9wIFnbcIOc8/IEfMpjANBgkqhkiG9w0BAQsFADBY
MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEuMCwGA1UE
AxMlR2xvYmFsU2lnbiBBdGxhcyBSMyBEViBUTFMgQ0EgMjAyMiBRMzAeFw0yMjA5
MjcyMDQ1MDhaFw0yMzEwMjkyMDQ1MDdaMB0xGzAZBgNVBAMMEioucHl0aG9uaG9z
dGVkLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALl3j65QPvfX
BoB9gTuN4eKkVYvGCyNClYI8A8ft8PMOwi6P9bWPEM/HZ9BxYtJ4J0EZS4M194fw
RrFSPVvvW/069fJQRlvEbITwrfXzQiMJm4RYXsJba8w1ZSzJgYapAY9UJoZpfv38
UKy2s2TuGUmvPfB49pDW+nM/EUZzchqI8JreZbmVadDvN0/tQQD/fYTIVUknvOc6
vcZLu3TJtJh2F38JzdE7Qs4ZFSrLRvHuKDkvB4jbxdnQWPDXajoZahSogVBA4Nd9
10ZIkgT9qhlMU0ibvUGnk0rBYqZwDBz4vupwy3jxXpRj449Dk3fvuELt9K95c0G0
8Q3piP3idIMCAwEAAaOCA2QwggNgMB0GA1UdEQQWMBSCEioucHl0aG9uaG9zdGVk
Lm9yZzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF
BwMCMB0GA1UdDgQWBBR0s+V2OyE4ZP710vImlUquU3SFaTBXBgNVHSAEUDBOMAgG
BmeBDAECATBCBgorBgEEAaAyCgEDMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3
Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAwGA1UdEwEB/wQCMAAwgZ4GCCsG
AQUFBwEBBIGRMIGOMEAGCCsGAQUFBzABhjRodHRwOi8vb2NzcC5nbG9iYWxzaWdu
LmNvbS9jYS9nc2F0bGFzcjNkdnRsc2NhMjAyMnEzMEoGCCsGAQUFBzAChj5odHRw
Oi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2F0bGFzcjNkdnRsc2Nh
MjAyMnEzLmNydDAfBgNVHSMEGDAWgBT6kTljmvutECTlvrW52qvZxEZpqzBIBgNV
HR8EQTA/MD2gO6A5hjdodHRwOi8vY3JsLmdsb2JhbHNpZ24uY29tL2NhL2dzYXRs
YXNyM2R2dGxzY2EyMDIycTMuY3JsMIIBfAYKKwYBBAHWeQIEAgSCAWwEggFoAWYA
dgCt9776fP8QyIudPZwePhhqtGcpXc+xDCTKhYY069yCigAAAYOAsj7MAAAEAwBH
MEUCIQCybQLy9Y8o12xbBa8PhzYZcxDo2zOoAK0MRxg4QTSsfQIgP4e6Cn0vcaaH
0H1pDxWN34/uApdCuzHAiWUVg7U4m5UAdQBvU3asMfAxGdiZAKRRFf93FRwR2QLB
ACkGjbIImjfZEwAAAYOAsj7+AAAEAwBGMEQCIDZzj+k1Jef32bUI9hsp+irQiuqr
RGSHUDQbn/c5cLpCAiA3hBDoTkxFjDrQ9Wi7HA4jiJ1flZgWcLrK11mfBgrWUQB1
AFWB1MIWkDYBSuoLm1c8U/DA5Dh4cCUIFy+jqh0HE9MMAAABg4CyPzwAAAQDAEYw
RAIgI7eMacUECoJ2owTzl9TKlmxF2tU2NPtjR8QX/al51S0CIE8oMCXflS49ib8r
fWcoO+JcxTyB1oYrKB080ejzWHjKMA0GCSqGSIb3DQEBCwUAA4IBAQAtUfolQHsW
SplGDIzpSOnc0lDxMn0iBAHABoeRl38gqSe0ar9TlWUFRtQIdGN2qulGRqhZdMXs
j3XWRg8LP+z/O/oCKuEaXEhdEOZSYnDmKgYVaMAJvGIwrG+95LL03+ekmU3NcHGP
BDzsPtXkZhoDbcgetI5FUf+ER2JSzQ2luWRIAxfzXDpbB97eWTiCG6Lw98dVkruz
LUZBJzHKNbujAaFGC5Gw3+3+9K/71ZemoQqYXWF0NgGFG74MQoWs76a9pRG6YlLc
HeU+iS4IJyu67EQr1ATjRCXsCoJDpYhCxsIMyVNeI8R80lrN5ssY2aiP5HCPsDsD
Vy90vU5BC7cO
-----END CERTIFICATE-----
subject=CN = *.pythonhosted.org

issuer=C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2022 Q3

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3476 bytes and written 417 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: 5EB761B5DDB707DCCDF9BDE59E4908D9748CACC92BC7AF147FEC6F9804EA72A6
    Session-ID-ctx: 
    Master-Key: A631513FAEB2E3064EDFA642432943A3317145CF1F28290AB227B9B595BC02CC207C5E0ACE01BC552875AC6A0399F8DD
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    0000 - a6 47 6d 14 d0 6e b7 57-32 5d 99 b7 a0 69 83 88   .Gm..n.W2]...i..
    0010 - b9 26 7e 0d a3 1a 8c f4-c1 14 c5 9e a8 6e cb c7   .&~..........n..
    0020 - 65 aa f9 90 18 64 75 e7-de 51 3a b0 07 34 80 f4   e....du..Q:..4..
    0030 - 27 b4 a2 70 70 82 02 2d-cb 56 a7 68 86 59 58 5a   '..pp..-.V.h.YXZ
    0040 - 8d 40 e2 3d 62 6b b2 30-da 64 2f 1c 9b 69 da a3   .@.=bk.0.d/..i..
    0050 - d0 19 85 b6 3c ef 85 87-c8 7e 67 0c da 1d 9c 33   ....<....~g....3
    0060 - 91 ff c0 61 4c a6 75 e2-78 a0 c7 dc bc 14 3e 72   ...aL.u.x.....>r
    0070 - a0 81 a8 d0 bb c4 83 53-50 87 3c f7 de 8c d1 7b   .......SP.<....{
    0080 - cd d7 b9 53 3d a7 68 9c-b7 c4 fb d1 a6 c6 f6 be   ...S=.h.........
    0090 - 76 24 a6 c8 dc 02 09 d6-bb 46 82 05 1f f8 3e 97   v$.......F....>.
    00a0 - db 55 9b 51 3f 69 30 3a-65 b3 de 7a 51 92 07 18   .U.Q?i0:e..zQ...
    00b0 - f7 3e af 21 76 80 25 ea-f9 b2 55 4f 6d 3b a6 d2   .>.!v.%...UOm;..

    Start Time: 1681217481
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: yes
---
DONE

TLS Debug / IPv6 (If available)

$ echo -n | openssl s_client -6 -connect pypi.org:443
139795134580544:error:02002065:system library:connect:Network is unreachable:crypto/bio/b_sock2.c:110:
139795134580544:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111:
139795134580544:error:02002065:system library:connect:Network is unreachable:crypto/bio/b_sock2.c:110:
139795134580544:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111:
139795134580544:error:02002065:system library:connect:Network is unreachable:crypto/bio/b_sock2.c:110:
139795134580544:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111:
139795134580544:error:02002065:system library:connect:Network is unreachable:crypto/bio/b_sock2.c:110:
139795134580544:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111:
connect:errno=101
$ echo -n | openssl s_client -6 -connect files.pythonhosted.org:443
140353850578752:error:02002065:system library:connect:Network is unreachable:crypto/bio/b_sock2.c:110:
140353850578752:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111:
140353850578752:error:02002065:system library:connect:Network is unreachable:crypto/bio/b_sock2.c:110:
140353850578752:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111:
140353850578752:error:02002065:system library:connect:Network is unreachable:crypto/bio/b_sock2.c:110:
140353850578752:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111:
140353850578752:error:02002065:system library:connect:Network is unreachable:crypto/bio/b_sock2.c:110:
140353850578752:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111:
connect:errno=101

Code of Conduct

ewdurbin commented 1 year ago

It appears this would work if IPv6 were disabled. Can you try disabling IPv6?

NimaDolatabadi commented 1 year ago

It appears this would work if IPv6 were disabled. Can you try disabling IPv6?

the problem still exist!

NimaDolatabadi commented 1 year ago

it seems no one cares for Iran! Python, Open source, Free, lots of developers and still we are limited. not gonna do anything at all?

ali2966 commented 1 year ago

I have the same issue with installing packages

Miyankouh commented 1 year ago

I have the same problem ---> Cannot install anything using pip from IRAN

keyvan-najafy commented 1 year ago

What is this?? What is going to happen tomorrow??? Is someone going to ban us from living?? I feel like I am suffocating.

amirkhalesi commented 1 year ago
Merkousha commented 1 year ago

I have the same issue with installing packages

ewdurbin commented 1 year ago

Hello, the problem has been made clear and your frustrations and anxieties are understandable. I'm sorry there isn't more that we are aware of that can be done.

As far as we are able to determine this censorship is enacted and enforced by the Iranian government and ISRG.

If anyone has actionable solutions, they are encouraged to suggest them here. We do not have the resources or expertise to determine methods of making PyPI and its associated service domains reliably available in the face of such state censorship.

Peyman2012 commented 1 year ago

I have the same issue with installing packages

m93n commented 1 year ago

I have the same problem ---> Cannot install anything using pip from IRAN

MehrdadHMT commented 1 year ago

I have the same problem ---> Cannot install anything using pip from IRAN

hosseinniri commented 1 year ago

I have the same problem. I can't install Python packages using pip from IRAN.

birddevelper commented 1 year ago

I faced same problem.

amirkhalesi commented 1 year ago

Hello, the problem has been made clear and your frustrations and anxieties are understandable. I'm sorry there isn't more that we are aware of that can be done.

As far as we are able to determine this censorship is enacted and enforced by the Iranian government and ISRG.

If anyone has actionable solutions, they are encouraged to suggest them here. We do not have the resources or expertise to determine methods of making PyPI and its associated service domains reliably available in the face of such state censorship.

Just tested out dns changing. These two works fine: 178.22.122.100 185.51.200.2

NimaDolatabadi commented 1 year ago

Hello, the problem has been made clear and your frustrations and anxieties are understandable. I'm sorry there isn't more that we are aware of that can be done.

As far as we are able to determine this censorship is enacted and enforced by the Iranian government and ISRG.

If anyone has actionable solutions, they are encouraged to suggest them here. We do not have the resources or expertise to determine methods of making PyPI and its associated service domains reliably available in the face of such state censorship.

Just about 15 minutes after i made this report, the download got opened again but download speed is extremely slow at about 20 KB/S. Now I'm sure it was something on PyPi side. Download speed is still the problem. I know that mirror repo works well but the main repo still encountering serious issues this could be ISP problem due to no affection of using any sort of vpn.

I hope you're service becomes functional in later days at all. Regards

amirQuf commented 1 year ago

I have the same issue with installing packages

Hormozzan commented 1 year ago

Super slow download rate here ... Anybody got a solution to this issue yet?

mehraneftekhari99 commented 1 year ago

This is a result of state censorship as the Pypi repos are hosted on Fastly CDN and CDNs are being blocked by I.R. and IRGC because of their censorship circumvention abilities (domain fronting, etc) without any regards to the costs on society and economy. There's no (easy) way to make changes that will help the situation. The only salvation is in the streets.

NimaDolatabadi commented 1 year ago

This is a result of state censorship as the Pypi repos are hosted on Fastly CDN and CDNs are being blocked by I.R. and IRGC because of their censorship circumvention abilities (domain fronting, etc) without any regards to the costs on society and economy. There's no (easy) way to make changes that will help the situation. The only salvation is in the streets.

so the only common way to get over with it is the one and only mirrors?! Like we're gonna stil and let them get a head of us

Sadegh-Moayedizadeh commented 1 year ago

I have the same problem. I think it's a sanction or something.

s-mohaghegh97 commented 1 year ago

I have the same issue with installing packages

farzane-shafiee commented 1 year ago

I have the same problem. what happened؟

AylinNaebzadeh commented 1 year ago

Unfortunately, I have the same issue with installing libraries and packages using pip.

ewdurbin commented 1 year ago

Hello, at this point the reply piling is not helping.

I'll reiterate: If anyone has constructive suggestions as to what can be done or can point to other services that have restored service after such state censorship, those replies are welcome.

If the reply piling continues, I will lock the discussion of this topic to maintainers. Which I DO NOT want to do. I would prefer to leave it open for those that might have suggestions or implementation ideas on mechanisms to make PyPI available in Iran again.

benyaminpy commented 1 year ago

Just install pysocks then use SSH tunneling for pip

ozebehnam commented 1 year ago

Unfortunately, i have same problem!

Vargha-Kh commented 1 year ago

👌🏾👌🏾

sh2si commented 1 year ago

I have the same problem since about two or three months ago.

sobhanzadehali commented 1 year ago

Being born in this country is like being born in a maze . you have to try to get out of it entire your life. I have the same problem...

mammadsafar commented 1 year ago

I have the same problem ---> Cannot install anything using pip from IRAN

NimaDolatabadi commented 1 year ago

Just install pysocks then use SSH tunneling for pip

have any manual for that? can you share it here please?

artaasd95 commented 1 year ago

Same problem here, sometimes I have to use conda. But, it does not work for all packages.

kayhan1 commented 1 year ago

What is the definition of open source?? If Python does not work properly for Iran, then it is not open source?

PejmanGhafouri commented 1 year ago

I have the same problem, we need DNS changer or VPN to download Python packages, it's nonsense

fortuna commented 1 year ago

I did some analysis. DNS is fine, there's no DNS -based blocking. TLS connections are being established too, so there isn't blocking there either.

What happens is that the connection is then being throttled. It's hard to tell what is triggering that. It could be the domain name on the SNI, or simply the IP address.

It would be helpful to determine whether this is ISP-dependent. Here is a command to try:

 time curl --ipv4 'https://files.pythonhosted.org/packages/84/a9/2bf119f3f9cff1f376f924e39cfae18dec92a1514784046d185731301281/scipy-1.10.1.tar.gz' > /dev/null

It should take around 2-5 seconds. On networks doing throttling it will take a lot more than that. Can people test on the different ISPs?

fortuna commented 1 year ago

I came up with a way to test if the throttling is based on the domain name.

First, establish a baseline of how long it takes to download the file directly:

 time curl --ipv4 'https://files.pythonhosted.org/packages/84/a9/2bf119f3f9cff1f376f924e39cfae18dec92a1514784046d185731301281/scipy-1.10.1.tar.gz' > /dev/null

You may need to run that multiple times to make sure it's somewhat stable. Perhaps 3 times and take the median time.

Then, run the fetch again with ClientHello splitting:

mkfifo in.fifo
nc -l localhost 8443 < in.fifo | { dd bs=100 count=1; sleep 0.1; cat; } | nc files.pythonhosted.org 443 > in.fifo &
time curl --connect-to ::localhost:8443 'https://files.pythonhosted.org/packages/84/a9/2bf119f3f9cff1f376f924e39cfae18dec92a1514784046d185731301281/scipy-1.10.1.tar.gz' > /dev/null

This code is running a local server on port 8443 that intercepts the outgoing flow, splits it on byte 100, then forwards to files.pythonhosted.org. We use in.fifo to connect the two nc commands for the incoming flow.

Here is a diagram of what's going on:

image

If the throttling is based on the SNI, and if the censor only looks at the first packet, then the second download should run a lot faster than the first one.

If anyone gives it a try, please report back.

vahidtwo commented 1 year ago

I have the same problem ---> Cannot install anything using pip from IRAN

BlackEagle1983 commented 2 months ago

I have same problem. I can not install any package via pip