GEO Detect

Hulu

// https://player.hulu.com/site/dash/308343-site-curiosity/js/app.js
Device ID: 190
Device Key: 6ebfc84f3c304217b20fd9a66cb5957f

Use POST method on https://play.hulu.com/v6/playlist.

Example JSON:

{
    "device_identifier": "10FC0316A4AF419CE8DCEF9262036304:2852",
    "deejay_device_id": 190,
    "version": 1,
    "all_cdn": true,
    "content_eab_id": "EAB::f74faeff-da38-4810-bc7c-523945fe31b9::61618343::124716002",
    "region": "US",
    "xlink_support": false,
    "device_ad_id": "55905B29-EF6E-CF1F-632F-AA7E35F16CFB",
    "limit_ad_tracking": false,
    "ignore_kids_block": false,
    "language": "en",
    "guid": "10FC0316A4AF419CE8DCEF9262036304",
    "rv": 512575,
    "kv": 450218,
    "unencrypted": true,
    "include_t2_revenue_beacon": "1",
    "cp_session_id": "EB931A32-B581-9128-44CA-9342C27C76D2",
    "interface_version": "1.9.0",
    "network_mode": "wifi",
    "play_intent": "resume",
    "playback": {
        "version": 2,
        "video": {
            "codecs": {
                "values": [
                    {
                        "type": "H264",
                        "width": 1920,
                        "height": 1080,
                        "framerate": 60,
                        "level": "4.2",
                        "profile": "HIGH"
                    }
                ],
                "selection_mode": "ONE"
            }
        },
        "audio": {
            "codecs": {
                "values": [
                    {
                        "type": "AAC"
                    }
                ],
                "selection_mode": "ONE"
            }
        },
        "drm": {
            "values": [
                {
                    "type": "WIDEVINE",
                    "version": "MODULAR",
                    "security_level": "L3"
                },
                {
                    "type": "PLAYREADY",
                    "version": "V2",
                    "security_level": "SL2000"
                }
            ],
            "selection_mode": "ALL"
        },
        "manifest": {
            "type": "DASH",
            "https": true,
            "multiple_cdns": true,
            "patch_updates": true,
            "hulu_types": true,
            "live_dai": true,
            "multiple_periods": false,
            "xlink": false,
            "secondary_audio": true,
            "live_fragment_delay": 3
        },
        "segments": {
            "values": [
                {
                    "type": "FMP4",
                    "encryption": {
                        "mode": "CENC",
                        "type": "CENC"
                    },
                    "https": true
                }
            ],
            "selection_mode": "ONE"
        }
    }
}

If you didn't set Cookie in header, it will output this error:

{
  "code": "IFS-400-001",
  "hci_code": "hulu:playstack:error:ifs-400-001",
  "message": "Could not find token in request"
}

For cookie, go to your browser's developer tools → Network → right click an request → Save all as HAR with content.

Then, in the Cookie section, find _hulu_session.

Add this to your header, and you will get this:

{
  "message": "Geo Rights Block (Bundle not available for client geolocation) - bundle_id: 124716002",
  "cause": "Roaming Geo",
  "code": "BYA-403-013",
  "hci_code": "hulu:playstack:error:bya-403-013",
  "root_cause_service": null
}

Or this:

{
  "message": "Anonymous proxy detected",
  "cause": "Anonymous Proxy",
  "code": "BYA-403-011",
  "hci_code": "hulu:playstack:error:bya-403-011",
  "root_cause_service": null
}

There are some other errors:

{
  "code": "DJA-400-002",
  "hci_code": "hulu:playstack:error:dja-400-002",
  "message": "Invalid kv for server key"
}
{
  "code": "DJA-400-003",
  "hci_code": "hulu:playstack:error:dja-400-003",
  "message": "Invalid playback config"
}