Kodi Community Forum
Release viwX (live and VOD from ITVX) - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Support (https://forum.kodi.tv/forumdisplay.php?fid=33)
+--- Forum: Add-on Support (https://forum.kodi.tv/forumdisplay.php?fid=27)
+---- Forum: Video Add-ons (https://forum.kodi.tv/forumdisplay.php?fid=154)
+---- Thread: Release viwX (live and VOD from ITVX) (/showthread.php?tid=374239)

Pages: 1 2 3 4 5 6 7


RE: viwX (live and VOD from ITVX) - jdbffjke - 2024-07-06

The credentials are fine. You clearly aren't prepared to help. @Karellen- edited


RE: viwX (live and VOD from ITVX) - Karellen - 2024-07-06

@jdbffjke

Be polite, stop swearing or you will quickly be removed from the forum.


RE: viwX (live and VOD from ITVX) - chrissxuk - 2024-07-06

(2024-07-06, 01:33)jdbffjke Wrote: The credentials are fine. You clearly aren't prepared to help. @Karellen- edited

Nobody is going to help you with that attitude.


RE: viwX (live and VOD from ITVX) - Barracuda8301 - 2024-07-22

Hey,

Thanks for this superb addon.

Unfortunately today it is not working for me. If I open it I receive this onscreen notification "HttpError Connection error: Forbidden".

I thought maybe it is my ITVX account, so I reset the password, that didn't help.

I have setup a brand new ITVX account, and that doesn't work either. Same error.

Any ideas?

Thanks


RE: viwX (live and VOD from ITVX) - Barracuda8301 - 2024-07-22

I have also uninstalled / reinstalled the addon.

I also get the same error on another Kodi device.


RE: viwX (live and VOD from ITVX) - kereltje - 2024-07-22

(2024-07-22, 17:39)Barracuda8301 Wrote: Hey,

Thanks for this superb addon.

Unfortunately today it is not working for me. If I open it I receive this onscreen notification "HttpError Connection error: Forbidden".

I thought maybe it is my ITVX account, so I reset the password, that didn't help.

I have setup a brand new ITVX account, and that doesn't work either. Same error.

Any ideas?

Thanks

In short: No.

I experience exactly the same thing the last few days on my general use set running OSMC and I just can't seem to figure out why.
It works OK on my android phone and linux desktop.
What devices are you using?


RE: viwX (live and VOD from ITVX) - Barracuda8301 - 2024-07-22

I am using an OSMC Vero V which is on Debian Bullseye with Kodi version 20.2


RE: viwX (live and VOD from ITVX) - kereltje - 2024-07-22

Thanks, interesting...

You mentioned "I also get the same error on another Kodi device". 
Is that also OSMC on Vero?


RE: viwX (live and VOD from ITVX) - kereltje - 2024-07-22

If anyone else is having this problem - viwX fails to open with 'FetchError: Forbidden' - can you let us know what OS, and Kodi version you are running on what hardware?
Or post a debug log.


RE: viwX (live and VOD from ITVX) - Barracuda8301 - 2024-07-23

I have found the problem, I am not sure what the solution is.

https://itv.com:443 is blocking access

When I curl it from the command line, even manipulating the useragent I receive the following error:

Code:
root@Sony:~# curl "https://www.itv.com:443"
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>

You don't have permission to access "http://www.itv.com/" on this server.<P>
Reference #18.87c35068.1721687020.1ce1c0c5
<P>https://errors.edgesuite.net/18.87c35068.1721687020.1ce1c0c5</P>
</BODY>
</HTML>
root@Sony:~# curl --header "User-Agent: somethingelse" "https://www.itv.com:443"
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>

You don't have permission to access "http://www.itv.com/" on this server.<P>
Reference #18.a0c35068.1721687064.46dcc4fc
<P>https://errors.edgesuite.net/18.a0c35068.1721687064.46dcc4fc</P>
</BODY>
</HTML>
root@Sony:~# curl --header "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0" "https://www.itv.com:443"
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>

You don't have permission to access "http://www.itv.com/" on this server.<P>
Reference #18.8de24817.1721687100.f47c6a
<P>https://errors.edgesuite.net/18.8de24817.1721687100.f47c6a</P>
</BODY>
</HTML>

If I try this from an Ubuntu machine, on the same network with same WAN ip, it works:


RE: viwX (live and VOD from ITVX) - Barracuda8301 - 2024-07-23

Here is a comparison of a successful curl (BTW I upgraded curl to match versions between working and non working devices):

OSMC Vero V - Not working
Code:
root@Sony:~/curl-7.81.0# curl "https://www.itv.com:443" -o curl.txt -v
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 184.51.104.253:443...
* Connected to www.itv.com (184.51.104.253) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [102 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [3543 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [333 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=GB; L=London; O=ITV PLC; CN=www.itv.com
*  start date: May  8 00:00:00 2024 GMT
*  expire date: Jan  9 23:59:59 2025 GMT
*  subjectAltName: host "www.itv.com" matched cert's "www.itv.com"
*  issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=GeoTrust RSA CA 2018
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
} [5 bytes data]
* Using Stream ID: 1 (easy handle 0xac1f8778)
} [5 bytes data]
> GET / HTTP/2
> Host: www.itv.com
> user-agent: curl/7.81.0
> accept: */*
>
{ [5 bytes data]
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
} [5 bytes data]
< HTTP/2 403
< server: AkamaiGHost
< mime-version: 1.0
< content-type: text/html
< content-length: 361
< expires: Mon, 22 Jul 2024 23:00:11 GMT
< cache-control: max-age=0, no-cache, no-store
< pragma: no-cache
< date: Mon, 22 Jul 2024 23:00:11 GMT
<
{ [5 bytes data]
100   361  100   361    0     0   1961      0 --:--:-- --:--:-- --:--:--  1951
* Connection #0 to host www.itv.com left intact

Ubuntu - Working
Code:
curl "https://www.itv.com:443" -o curl.txt -v
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 104.96.172.240:443...
* Connected to www.itv.com (104.96.172.240) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.0 (OUT), TLS header, Certificate Status (22):
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.2 (IN), TLS header, Certificate Status (22):
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [102 bytes data]
* TLSv1.2 (IN), TLS header, Certificate Status (22):
{ [5 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [3543 bytes data]
* TLSv1.2 (IN), TLS header, Certificate Status (22):
{ [5 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [333 bytes data]
* TLSv1.2 (IN), TLS header, Certificate Status (22):
{ [5 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
} [5 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS header, Finished (20):
} [5 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
} [5 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS header, Finished (20):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Certificate Status (22):
{ [5 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=GB; L=London; O=ITV PLC; CN=www.itv.com
*  start date: May  8 00:00:00 2024 GMT
*  expire date: Jan  9 23:59:59 2025 GMT
*  subjectAltName: host "www.itv.com" matched cert's "www.itv.com"
*  issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=GeoTrust RSA CA 2018
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
} [5 bytes data]
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
} [5 bytes data]
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
} [5 bytes data]
* Using Stream ID: 1 (easy handle 0x650d41a7deb0)
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
} [5 bytes data]
> GET / HTTP/2
> Host: www.itv.com
> user-agent: curl/7.81.0
> accept: */*
>
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
} [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
< HTTP/2 200
< content-type: text/html; charset=utf-8
< x-powered-by: Express
< x-xss-protection: 1; mode=block
< x-content-type-options: nosniff
< x-ssr-cache: MISS
< content-security-policy-report-only: default-src 'nonce-06fc6b66c5dfa4e7a79459e9f1dd26ee' 'self'; img-src * data:; style-src 'self' 'unsafe-inline' *.cassiecloud.com *.itv.com; style-src-elem 'self' 'unsafe-inline' *.cassiecloud.com *.itv.com; font-src 'self' *.itv.com; connect-src 'self' *.amplitude.com *.akamaihd.net *.amazonaws.com *.cassiecloud.com *.conviva.com *.facebook.net *.facebook.com *.analytics.google.com *.google-analytics.com *.hotjar.com *.hotjar.io *.irdeto.com *.2cnt.net *.itv.com https://http-inputs-itv.splunkcloud.com:443/services/collector *.stripe.com *.syrenis.com *.tiktok.com *.impact.com ; script-src 'self' 'unsafe-eval' 'unsafe-inline' *.amplitude.com *.cassiecloud.com *.facebook.net *.facebook.com *.analytics.google.com *.google-analytics.com *.gstatic.com *.googletagmanager.com *.hotjar.com *.hotjar.io *.2cnt.net *.itv.com *.stripe.com *.tiktok.com bugcrowd.com assets.bugcrowdusercontent.com *.impactcdn.com ; media-src 'self' blob: *.amplitude.com *.akamaihd.net *.itv.com *.brightcovecdn.com; worker-src 'self' blob:; object-src 'self' data:; frame-src 'self' *.facebook.net *.facebook.com *.flashtalking.com *.stripe.com bugcrowd.com;
< etag: "tbqcoak3tbkq9d"
< x-akamai-transformed: 9 - 0 pmb=mTOE,1
< expires: Mon, 22 Jul 2024 22:59:30 GMT
< cache-control: max-age=0, no-cache, no-store
< pragma: no-cache
< date: Mon, 22 Jul 2024 22:59:30 GMT
< set-cookie: _abck=B5CDE02130FADD9BBB2E0880C406AA4A~-1~YAAQoMNQaDocD6GQAQAAXuCr3AzwnSAMFpGLPQ8zYbr07xBMwVR1ATO/++ROX1jNrvpntWg4S0f1LUZ0mM9OKHd4Jp6HmAKv8OVwxl7ZYTiyLurvW4V8mFrYKH8dNy0l0Q8pLZo8+5ELDTorrz0Ki9xVsVAMptT+Ce8YDR3u7HUllWsJT1T1IjlojnelcDDJsPmrCM1dmTJY5nwH/HMoO41wJaVel3TJ+H8L30VcB7cUafD7Ynbrt10V1gntrPQubGae62xfnkAjdVX1jnYe/PgKQZuvCzzEhCosUao1ltaYVGgn+KA9jpGLFBZvhkKWpUB8qlQOA1m4+xWFZCSU0DqeZ4VZQRsZFIwYlQBBESzjtusc2TI=~-1~-1~-1; Domain=.itv.com; Path=/; Expires=Tue, 22 Jul 2025 22:59:30 GMT; Max-Age=31536000; Secure
< set-cookie: bm_sz=4A6D596BCEFBFE5FBB7394686D177B81~YAAQoMNQaDscD6GQAQAAXuCr3BhmQqpLA5gLE51uBeubbcgUXw6am0YQ7tgpDG174c5OwHUhBsZ31pN0cxaUB6O+Mw9lAarOqZOksT0reczZqRHT3SHGZtXxPCi5wdsmSZ5MmdmJ30t+Hhw64O8mBcH54m7sx/SqcixjFtopbvOnOMaysjJlc0XAGsKfTtZC3ikqYFnNI0sr2/r0chcc0rdOuOuUKThDF+ylsDC9JnEmKQzgGcsE1g3Zj4WsdYpic0Z2wHQZ03XpoplHXHAWPELbnmS0rWuJTnoU9m3veNPDBK+uih4dAKp3VmcOyJg7pZMajRO4NJB1ZAbdCPwnzOFS3i3wYZj4Adoyhwwuwi6MWoGh~4273200~4601136; Domain=.itv.com; Path=/; Expires=Tue, 23 Jul 2024 02:59:29 GMT; Max-Age=14399
<
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
* TLSv1.2 (IN), TLS header, Supplemental data (23):
{ [5 bytes data]
100  945k    0  945k    0     0  4134k      0 --:--:-- --:--:-- --:--:-- 4147k
* Connection #0 to host www.itv.com left intact




Any further digging please let me know what to try.


RE: viwX (live and VOD from ITVX) - Sam.Nazarko - 2024-07-23

I am looking in to this.
Edit: looks like ITV are adding some blocks. Will continue to investigate.


RE: viwX (live and VOD from ITVX) - kereltje - 2024-07-23

Thanks @Barracuda8301 and @Sam.Nazarko for joining in.

I noticed that Barracuda8301 test on osmc and ubuntu connect to different end point. Not saying that saying that explains the difference, but it would be nice if that could be taken out of the equation. 
Although both connections seem to compete just fine the SSL handshakes look quite different to me. When I ran OSMC's request through mitm proxy (running on an amd64 machine) all requests to itv.com completed OK. That also suggests that SSL is at least part of the issue.

Trying to make a similar comparison with python requests as Barracuda8301 did with curl, I found that on OSMC's system python www.itv.com returns without error. However, the system's requests package is version 2.25.1, while kodi has 2.31.0.
Doing step-by step upgrades revealed that problems start with requests 2.30.0, which also upgraded urllib3 from version 1.26.19 to 2.2.2. Things seem to go wrong with urllib3 v2. According to urllib3's release notes, version 2 was a major upgrade that started to make use of new features in openssl 1.1.1. Following this paragraph I downgraded urllib3 to v1.26 and all test requests to itv returned OK.

I checked several (linux based) systems, all using a version of urllib > 2, in particular LibreElec 11 on rpi4. None had any issues viwx or running tests requests to www.iv.com. However, all had an openssl version > 3, while osmc runs openssl 1.1.1. Judging by the facts that Kodi on linux runs the O.S.'s python, that urllib3 uses python's ssl module, which uses the system's openssl binaries, I believe that the problem is closely related to these 'new features' in openssl 1.1.1 that urllib3 started to use since version 2. The tests Barracuda8301 did with cURL probably had the same problem.

AFAIK there have been no recent updates to OSMC or the urllib3 addon, so it must have been some change at ITV that caused the recent problems. It is, however, such a unique combination of factors that I can hardly believe it was intended create blocks other than just not supporting openssl 1.1.1.

So, the problem seems confined to OSMC. I got viwX working again in OSMC by manually copying version 1.26.19 code to the urllib3 addon, but that's not a general solution.
I still don't know what exactly the problem is, and whether it's actually solvable in viwX.
I just posted my thoughts here hoping that one idea might lead to another, or maybe someone can identity some major flaw in my(rather random) reasoning.
I'm very curious about the result of Sam.Nazarko's investigations.


RE: viwX (live and VOD from ITVX) - kereltje - 2024-07-29

So, after some more digging, what it comes down to is that urllib3 version 2+ sets some options in the SSL context it creates. It seems that itv somehow has a problem when ssl.OP_NO_TICKET is set on openssl1.1.1. 

I don't know why, especially since openssl version 3 does not have this problem, although both versions seem to settle on the same protocol, cipher, etc, when connected to ww.itv.com. But after hours of digging (due to a severe lack of knowledge on the subject) I've lost the will to know.

The solution, or workaround rather, for now is to create our own SSLContext to be used with all requests. Apart from OP_NO_TICKET this context is very much the same as urllib3 creates, so I expect no negative side effects with normal use.
Even so, it would be nice if you all could test the new version and let us know what O.S and Kodi version you run and if you experience any troubles running viwX. If you do have problems, please set 'log level' to 'debug' in viwX's settings and create a debug log.
I'm particularly interested to hear from people who have had this problem on systems other than OSMC. (the problem being viwx fails to start with "FetchError: Forbidden")

The 4.1.2 beta version is installable as zipfile from https://www.dimkroon.net/kodi-addons/plugin.video.viwx_1.4.2-beta.1.zip.
Or download from https://github.com/dimkroon/itvx-for-kodi/releases.


viwx version 1.5.0 - kereltje - 2024-08-01

Version 1.5.0

Fixes:
  • ViwX failed to start with 'FetchError: Forbidden'. An issue apparently only experienced by users of OSMC and possibly some other systems that still use OpenSSL v1.1.1.

New Features:
  • Episodes in 'Continue Watching' now have context menu item 'Show all episodes', which opens the programme folder with all series and episodes.
  • Trending now shows programmes with episodes as folder, rather than playing the first episode of series 1.

I expect 1.5.0 will soon be in the official Kodi repo, but it's also available as zip file from
https://github.com/dimkroon/itvx-for-kodi/releases
and kodi file source https://dimkroon.net/kodi-addons/

Check the first post in this thread for installation instructions.