A proxy web app that serves ABC iView content outside of the iView webplayer, avoiding intrusive data harvesting.

Overview

iview-proxy

A proxy web app that serves ABC iView content outside of the iView webplayer, avoiding intrusive data harvesting.

There's also a cool Android fork located here.

Notes

  • Privacy Badger blocks the playback URL of ABC iView video playlists because of cross-origin playback, so whitelist that URL when it's flagged otherwise videos will refuse to play.

Purpose

This project has two main goals:

  • Avoid as much account authentication as possible to watch ABC iView content,

  • Avoid providing as much data as possible to iView to stop data harvesting.

Despite being aptly warned, the ABC has taken a forceful approach to collecting ABC iView data. This app seeks to remedy this by obtaining iView medias' m3u8 playlists, and isolating them to a locked-down media player, completely free of any analytics tracking.

How does it work?

Search

The search function on iView is riddled with analytics tracking:

{
	"requests": [
		{
			"indexName": "ABC_production_iview_web",
			"params": "highlightPreTag=%3Cais-highlight-0000000000%3E&highlightPostTag=%3C%2Fais-highlight-0000000000%3E&getRankingInfo=true&clickAnalytics=true&analytics=true&userToken=anonymous-60451354-4525-401b-9a54-3e18fa480cd5&facetFilters=playable%3A%20-false&query=s&facets=%5B%5D&tagFilters="
		},
		{
			"indexName": "ABC_production_iview_web",
			"params": "highlightPreTag=%3Cais-highlight-0000000000%3E&highlightPostTag=%3C%2Fais-highlight-0000000000%3E&getRankingInfo=true&clickAnalytics=true&analytics=true&userToken=anonymous-60451354-4525-401b-9a54-3e18fa480cd5&facetFilters=playable%3A%20-false&query=s&hitsPerPage=6&filters=docType%3A%20category%20OR%20docType%3A%20channel&ruleContexts=iview_categories&facets=%5B%5D&tagFilters="
		},
		{
			"indexName": "ABC_production_iview_web",
			"params": "highlightPreTag=%3Cais-highlight-0000000000%3E&highlightPostTag=%3C%2Fais-highlight-0000000000%3E&getRankingInfo=true&clickAnalytics=true&analytics=true&userToken=anonymous-60451354-4525-401b-9a54-3e18fa480cd5&facetFilters=playable%3A%20-false&query=s&hitsPerPage=8&filters=docType%3A%20Program&ruleContexts=iview_programs&page=0&facets=%5B%5D&tagFilters="
		},
		{
			"indexName": "ABC_production_iview_web",
			"params": "highlightPreTag=%3Cais-highlight-0000000000%3E&highlightPostTag=%3C%2Fais-highlight-0000000000%3E&getRankingInfo=true&clickAnalytics=true&analytics=true&userToken=anonymous-60451354-4525-401b-9a54-3e18fa480cd5&facetFilters=playable%3A%20-false&query=s&hitsPerPage=8&filters=docType%3A%20VideoEpisode%20AND%20NOT%20subType%3A%20feature%20AND%20NOT%20subType%3A%20livestream&ruleContexts=iview_episodes&page=0&facets=%5B%5D&tagFilters="
		}
	]
}

So iview-proxy disables it all, and locks down iView's search to the bare-minimum, keeping your data safe.

Watching

When you watch a video on the normal iView site, all sorts of data is sent back to iView and third parties, which is concerning to those who care about their privacy. See here.

iview-proxy calls only show/series metadata APIs to get the video info, and acts as if it is a web scraper of sorts. Once it has the video source for a show, it plays it in a non-custom video.js player, completely free of any analytics tracking.

Node JS

  1. Download and install Node JS from here

  2. Verify its installation by opening a terminal (or CMD/PowerShell for Windows users), and run this command:

    node

    You should enter the Node JS interpreter.

    Type

    .exit

    to leave.

Setup

The actual app is contained in the src directory.

  1. Install required dependencies

    npm install
  2. Start the server

    npm start

    or

    node .
  3. Navigate to localhost:1984 in a browser to access the app.

Comments
  • Docker image

    Docker image

    This pull request adds a Dockerfile so that you can build a docker image for it.

    It builds fine with the automated builds with Dockerhub if you want to set that up.

    I did an automated build here: https://hub.docker.com/r/gdunstone/iview-proxy

    opened by gdunstone 4
  • Most news is unavailable

    Most news is unavailable

    I get a 503 from iviewhlsvod-vh.akamaihd.net for most "news" type content.

    I am not sure why.

    For example clip with id TASM202013384710 - ABC News Tasmania Extras - Taste of Tasmania festival future in doubt

    opened by gdunstone 1
  • Fix invalid HTML

    Fix invalid HTML

    • Fix error: missing doctype in index & show
    • Fix error: missing head title element in index
    • Fix warning: missing lang attribute in index & show

    Both index and show HTML now fully validate with no warnings according to https://validator.w3.org/.

    opened by yawnoc 0
  • fix for undefined in search results

    fix for undefined in search results

    Sometimes the iview api returns results that dont actually exist, ie they dont have an id or title, this results in 'undefined' entries in the search results.

    opened by gdunstone 0
  • CORS problems when anywhere other than localhost

    CORS problems when anywhere other than localhost

    When hosting this on anything other than localhost, I get CORS errors when viewing a show.

    I get CORS Missing Allow Origin.

    I dont think that doing the API requests from the browser is the best idea. The server app should also act as a proxy for the browsers API calls.

    opened by gdunstone 7
  • gigya SSO

    gigya SSO

    this will need to deal with the gigya SSO : https://help.sap.com/viewer/8b8d6fffe113457094a17701f63e3d6a/GIGYA/en-US/417f1e0c70b21014bbc5a10ce4041860.html

    which i assume will be included on every webpage in iview, it hasnt been turned on yet. example js include is here: https://cdns.au1.gigya.com/js/gigya.js?apikey=3_MUpFPmfqHoGIK_YD3Lt6Oi23Gm3bsK7MrbeCdfynaGVwVB8yX_Hwaq4_S9Nk0fZF

    yt-dl does have a login capability, but that isn't the point huh.

    opened by kaputnikGo 4
Owner
The OpenGov Australia Project
🇦🇺 Open source projects designed to interact with or process Australian government data.
The OpenGov Australia Project
DSC-AlarmServer - Creates web interface to DSC/Envisalink with proxy.

DSC-AlarmServer Creates web interface to DSC/Envisalink with proxy. Since the Envisalink module can only have one connection, this phython script can

null 4 Oct 11, 2022
A full-featured http proxy for node.js

node-http-proxy node-http-proxy is an HTTP programmable proxying library that supports websockets. It is suitable for implementing components such as

http ... PARTY! 13.1k Jan 3, 2023
Full-featured, middleware-oriented, programmatic HTTP and WebSocket proxy for node.js

rocky A multipurpose, full-featured, middleware-oriented and hackable HTTP/S and WebSocket proxy with powerful built-in features such as versatile rou

Tom 370 Nov 24, 2022
Global HTTP/HTTPS proxy agent configurable using environment variables.

global-agent Global HTTP/HTTPS proxy configurable using environment variables. Usage Setup proxy using global-agent/bootstrap Setup proxy using bootst

Gajus Kuizinas 267 Dec 20, 2022
Simple proxy that is intended to support on chaos testing.

Proxy with Behavior Proxy with Behavior is a node application that work as a reverse proxy, and enables apply some behaviors to be executed in request

José Carlos de Moraes Filho 7 Jan 28, 2022
Prefect API Authentication/Authorization Proxy for on-premises deployments

Proxy Authorization Service for Prefect UI and Prefect CLI Prefect is a great platform for building data flows/pipelines. It supports hybrid execution

Softrams 20 Dec 10, 2022
wabac.js CORS Proxy

wabac.js CORS Proxy This provides a simple CORS proxy, which is designed to run as a Cloudflare Worker. This system is compatible with wabac.js-based

Webrecorder 3 Mar 8, 2022
Highly sophisticated proxy used for evading internet censorship or accessing websites in a controlled sandbox using the power of service-workers and more! Easy deployment version (Node.js)

Ultraviolet-Node The deployable version of Ultraviolet, a highly sophisticated proxy used for evading internet censorship or accessing websites in a c

Titanium Network 27 Jan 2, 2023
Highly sophisticated proxy used for evading internet censorship or accessing websites in a controlled sandbox using the power of service-workers and more! Easy deployment version (Node.js)

Ultraviolet-Node The deployable version of Ultraviolet, a highly sophisticated proxy used for evading internet censorship or accessing websites in a c

Titanium Network 34 Apr 15, 2022
Simple, configurable part mock part proxy

Moxy Simple, configurable mock / proxy server. Table of Contents Quick start Programatic CLI Docker Docker compose Usage Programatic Via HTTP requests

Acrontum GmbH 7 Aug 12, 2022
Build a fake backend by providing the content of JSON files or JavaScript objects through configurable routes.

http-fake-backend Build a fake backend by providing the content of JSON files or JavaScript objects through configurable routes. It actually can serve

Micromata GmbH 279 Dec 11, 2022
An attempt to decode the Digital Covid Certificate (signed by the french app TousAntiCovid) - For Educational Purposes Only

Digital Covid Certificate Decoder An attempt to decode the Digital Covid Certificate (signed by the french app TousAntiCovid) How to use If you want t

Wassim Chegham 32 Aug 11, 2022
NodeJS app to dynamically update your twitter header with AP Dhillon's lyrics

header-dhillon A NodeJS app that dynamically updates your twitter header with 2 lines of random lyrics from any random track by the punjabi artist AP

Raj Shankar Tiwary 4 Jul 25, 2022
đź—ş Universal router for web applications.

Expressive router for nodejs and the browser. Rill brings cascading middleware to the browser and enables a familiar routing solution for web applicat

Rill 570 Dec 9, 2022
An HTTP Web Server for Chrome (chrome.sockets API)

An HTTP Web Server for Chrome (chrome.sockets API)

Kyle Graehl 1.2k Dec 31, 2022
Node.js web server framework for Http/1.1 or Http/2

Node.js web server framework for Http/1.1 or Http/2 Description: This is http framework, you can use it to create Http/1.1 or Http/2 service。 Now let'

Jeremy Yu 10 Mar 24, 2022
⚡️The Fullstack React Framework — built on Next.js

The Fullstack React Framework "Zero-API" Data Layer — Built on Next.js — Inspired by Ruby on Rails Read the Documentation “Zero-API” data layer lets y

⚡️Blitz 12.5k Jan 4, 2023
Allows the public to easily report and track the geolocation of anyone or anything they spot outside, using a mobile app or web frontend.

LIVE DEMO: https://armytracker.com/ (tracking the invading Russian army in Ukraine) Attention: - If you'd like to help the project either as a program

Michal Certicky 9 Mar 27, 2022
Library for calculating where to draw tree nodes, while avoiding overlap.

Tree Grapher Library for calculating where to draw tree nodes, while avoiding overlap. Installation 1) npm install tree-grapher --save-exact The --sav

Stephen Wicklund 1 Feb 7, 2022
Inside-out promise; lets you call resolve and reject from outside the Promise constructor function.

Inside-out promise; lets you call resolve and reject from outside the Promise constructor function.

Lily Scott 3 Feb 28, 2022