0

Ok, I’m trying to get the HTML body from one site, with Cloudflare security.

I wrote the following code:

def reqja3():
    """Get request"""
    import ssl, httpx

    ssl_ctx = ssl.SSLContext(protocol=ssl.PROTOCOL_TLSv1_2)
    ssl_ctx.set_alpn_protocols(["h2", "http/1.1"])
    ssl_ctx.set_ecdh_curve("prime256v1")
    ssl_ctx.set_ciphers(
        "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:"
        "TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:"
        "ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:"
        "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:"
        "DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:"
        "ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:"
        "ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:"
        "DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES128-SHA256:"
        "ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:"
        "ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:"
        "DHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:"
        "ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:"
        "RSA-PSK-AES256-GCM-SHA384:DHE-PSK-AES256-GCM-SHA384:"
        "RSA-PSK-CHACHA20-POLY1305:DHE-PSK-CHACHA20-POLY1305:"
        "ECDHE-PSK-CHACHA20-POLY1305:AES256-GCM-SHA384:"
        "PSK-AES256-GCM-SHA384:PSK-CHACHA20-POLY1305:"
        "RSA-PSK-AES128-GCM-SHA256:DHE-PSK-AES128-GCM-SHA256:"
        "AES128-GCM-SHA256:PSK-AES128-GCM-SHA256:AES256-SHA256:"
        "AES128-SHA256:ECDHE-PSK-AES256-CBC-SHA384:"
        "ECDHE-PSK-AES256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:"
        "SRP-AES-256-CBC-SHA:RSA-PSK-AES256-CBC-SHA384:"
        "DHE-PSK-AES256-CBC-SHA384:RSA-PSK-AES256-CBC-SHA:"
        "DHE-PSK-AES256-CBC-SHA:AES256-SHA:PSK-AES256-CBC-SHA384:"
        "PSK-AES256-CBC-SHA:ECDHE-PSK-AES128-CBC-SHA256:ECDHE-PSK-AES128-CBC-SHA:"
        "SRP-RSA-AES-128-CBC-SHA:SRP-AES-128-CBC-SHA:RSA-PSK-AES128-CBC-SHA256:"
        "DHE-PSK-AES128-CBC-SHA256:RSA-PSK-AES128-CBC-SHA:"
        "DHE-PSK-AES128-CBC-SHA:AES128-SHA:PSK-AES128-CBC-SHA256:PSK-AES128-CBC-SHA"
    )
    client = httpx.Client(http2=True, verify=ssl_ctx)

    print(
        client.get(
            "https://betway.com/en/sports",
            headers={
                "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
                "Accept-Encoding": "gzip, deflate",
                "Accept-Language": "en-US,en;q=0.5",
                "Connection": "keep-alive",
                "Host": "betway.com",
                "Upgrade-Insecure-Requests": "1",
                "Sec-Fetch-Dest": "document",
                "Sec-Fetch-Mode": "navigate",
                "Sec-Fetch-Site": "none",
                "Sec-Fetch-User": "?1",
                "TE": "trailers",
                "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0",
                "Cookie": "bw_BrowserId=76501619282281851930349603208014741540; _ga=GA1.2.1003986219.1650841035; _fbp=fb.1.1650841035798.971215073; COOKIE_POLICY_ACCEPTED=true; TrackingVisitId=67e26f62-e357-443d-be0c-83223d7ab902; hash=67e26f62-e357-443d-be0c-83223d7ab902; bw_SessionId=47d27eaa-623f-4434-a03b-9716d4b829a0; StaticResourcesVersion=12.43.0.1; ssc_btag=67e26f62-e357-443d-be0c-83223d7ab902; SpinSportVisitId=d369d188-39c6-41c6-8058-5aa297dd50c0; userLanguage=en; TimezoneOffset=120; _gid=GA1.2.381640013.1652975492; _gat_UA-1515961-1=1; ens_firstPageView=true; _gat=1; AMCVS_74756B615BE2FD4A0A495EB8%40AdobeOrg=1",
            },
        ).text
    )

reqja3()

Cloudflare can be bypassed with the "right request", so you don't need to use JavaScript.

The main thing is to make a request like the browser does. I set SSL parameters, TLS protocol and HTTP 2 version. And it was working until today. What did I do wrong?

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
SonyMag
  • 141
  • 7
  • Check your IP, maybe it banned by the cloudflare service. Otherwise check and update the headers again. – redParrot Jul 14 '22 at 15:40
  • "httpx" in the title is *probably* not a typo of [HTTPS](https://en.wikipedia.org/wiki/HTTPS), but the Python library [HTTPX](https://www.python-httpx.org/). – Peter Mortensen Aug 07 '23 at 12:18

0 Answers0