Entschlüsseln von Oddspot-Daten durch AntwortabfangenPython

Python-Programme
Anonymous
 Entschlüsseln von Oddspot-Daten durch Antwortabfangen

Post by Anonymous »

Code: Select all

import asyncio
from datetime import datetime, UTC
from playwright.async_api import async_playwright

captured = []

async def run():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page()

async def handle_response(response):
url = response.url.lower()

if any(k in url for k in ("feed", "ajax", "match", "odds")):
try:
content_type = response.headers.get("content-type", "")
if content_type.startswith("application/json"):
data = await response.json()
captured.append({
"url": response.url,
"data": data,
"captured_at": datetime.now(UTC).isoformat(),
})
print(f"Captured: {response.url}")
except Exception:
pass  # ignore non-JSON payloads

page.on("response", handle_response)

await page.goto(
"https://www.oddsportal.com/football/england/premier-league/",
wait_until="networkidle",
)

await asyncio.sleep(5)
print("Captured responses:", len(captured))
await browser.close()

asyncio.run(run())

Meine Ausgabe:

Code: Select all

Captured responses: 0
Wir gehen davon aus, dass wir JSON-Nutzlasten erfassen, die Quoten- oder Spieldaten enthalten, zum Beispiel:

Code: Select all

 {
"matches": [
{
"id": 123,
"home": "Arsenal",
"away": "Chelsea",
"details": {
"1x2 Match Winner": {
"1": "1.39",
"X": "4.83",
"2": "5.15"
},
"Full Time Over/Under": {
"Over/Under +3.5": {
"Over": "N/A",
"Under": "N/A"
},
"Over/Under +4.5": {
"Over": "1.21",
"Under": "3.58"
},
"Over/Under +4.5": {
"Over": "1.21",
"Under": "3.58"
},
"Over/Under +5": {
"Over": "N/A",
"Under": "N/A"
},}
}
]
}
Problembeschreibung
Oddsportal lädt absichtlich Daten über nicht standardmäßige/verschleierte Antworten, die
  • nicht mit Response.json() geparst werden können
  • Ihre eigentliche API ist ausgeblendet
  • Beim Navigieren in Tabs von (z. B. „Handicap“, „1X2“) werden immer wieder Abrufanfragen aufgerufen https://www.oddsportal.com/pl/match-eve ... IN&lang=pl und diese Antwort besteht nur aus einigen Zahlen. Glauben Sie also, dass die Website sie dekodiert
Anstatt darauf zu warten, dass der Browser den Text rendert Auf dem Bildschirm (DOM Parsing) fangen wir die vom Server kommenden Rohdaten ab.
  • Konzept: Wenn Sie auf eine Registerkarte klicken (z. B. „Handicap“, „1X2“), fordert der Browser Daten vom Server an. Wir erfassen diese JSON-Antwort direkt.
  • Vorteil: Keine Renderingkosten. Sie erhalten die Daten sofort, ohne auf die Aktualisierung der Benutzeroberfläche warten zu müssen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post