Can access website's API via browser but not python requests (cookie not working)

Viewed 49

I'm trying to scrape data from a dynamic website using Python requests.

I've had a look through the network requests in developer tools and found the URL the website sends GET requests to in order to access the required data:

Screenshot

When a request is made to the website's API it returns a cookie (via the Set-Cookie header) which I believe the browser then uses in future GET requests to access the data. Here is a screenshot of the request and response headers when the page is first loaded and all previous cookies have been removed:

When I load the request URL directly in my browser it works fine (it's able to acquire a valid cookie from the website and load the data). But when I send a GET request to that same URL via the Python requests module, the cookie returned doesn't seem to be working (I'm getting a 403 - Forbidden error).

My Python code:

    import requests

    session = requests.Session()

    headers =  {
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", 
        "Accept-Encoding": "gzip, deflate", 
        "Accept-Language": "en-GB,en;q=0.9", 
        "Host": "www.oddschecker.com", 
        "Upgrade-Insecure-Requests": "1", 
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.33", 
    }

    response = session.get(url, headers=headers)

    # Currently returning a 403 error unless I add the cookie from my browser as a header.

I believe the cookie is the issue because when I instead take the cookie generated by the browser and use that as a header in my Python program it is then able to return the desired information (until the cookie expires.)

My goal is for the Python program to be able to acquire a working cookie from this website automatically so it can successfully send requests and gather data.

0 Answers
Related