How to get some Connectopia videos on their official website for free

Hello everyone!

It’s me again, bringing you another dirty way to find some free videos. I’ve tinkered a bit with the Connectopia website this afternoon since people were talking about it on Discord and I was bored. I figured out that it’s somewhat easy to get some of their videos by using the initial URL we get from their PR video and modify it, though it doesn’t work with every videos so if someone with more knowledge can figure that out, you’re welcome to post in the thread.

I’ll explain how I tinkered a bit with their website:

I’ve launch one of their PR videos, for example this one: 【PR】天砕めておちゃん♡ウェディングドレスのまま乱れ狂った結婚初夜編♡ - こねくとぴあ

Now from that link above, we get some interesting information. Their links are made this way:

host.cloudfront.net/archive/id of the video/datehoursminutes_quality.m3u8

What do we do now that we know this? You just go to another paid video: 【特別動画】めておちゃん♡浴衣姿、はだけさせ脱がしきらない絶妙なエロさをお届け♡ - こねくとぴあ

  • Inspect again what’s going on in the network…but this time we don’t get any information about the m3u8 since we don’t have any access because we’re broke gang and it’s not free. There is still some interesting information available here though and we’re going to use our brain and logic to build a url to the m3u8 manually. Click on the link that start with video% (it’s the thumbnail of the video) and look at the “Last modified date” in the Headers Last-Modified: Wed, 02 Aug 2023 17:34:10 GMT

Now what do we do? we use our old link, remove the ID, date/time of the PR video… we keep only this

https://d3m2j4lf6xiv21.cloudfront.net/archive/_1080p.m3u8

Then we add the id of the current video, the date/time of the last modified information we got earlier “Wed, 02 Aug 2023 17:34:10 GMT” but let’s not forget Japan is GMT+9 so in japan time it’s “Thu, 03 Aug 2023 02:34:10 GMT+9”. We then manually build our link: https://d3m2j4lf6xiv21.cloudfront.net/archive/Kf1Ey1mIRJk4SpNz52o6/202308030234_1080p.m3u8

It’s still not working…damnit. Let’s try adding 1 extra minute to see if it’s not some discrepancy between the thumbnail generation and the m3u8: https://d3m2j4lf6xiv21.cloudfront.net/archive/Kf1Ey1mIRJk4SpNz52o6/202308030235_1080p.m3u8

Bingo, it’s working now.

Now you can use streamlink, yt-dlp or any other tool to download the video (I used streamlink):

streamlink --stream-segment-threads 10 --http-header “User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36” --http-header “Referer=https://app.cafe-connectopia.com/” -o “202308030235_1080p.ts” “https://d3m2j4lf6xiv21.cloudfront.net/archive/Kf1Ey1mIRJk4SpNz52o6/202308030235_1080p.m3u8” best

The issue here is: This seems to only work if they NEVER edited/modified the video after uploading it (since we’re using the date of the thumbnail to figure out the link/url of the m3u8) and I haven’t figured out a way to make this work with the streaming/live at all. Feel free to try on the other videos, I only tried a bunch and most failed but a few actually worked.

If someone with more knowledge can figure out how to find the date/time they are using to build the last part of their m3u8 url in some other way, you can basically download every videos on their website for free.

6 Likes

they have an api that the site uses to get information about a video, with it you can get the creation date

import httpx
from datetime import datetime, timedelta

videoid = "IDnUBNTiwGcG3bBclZoy"

# get video info from the api
resp = httpx.get(f"https://app.cafe-connectopia.com/_next/data/GkVbZsArm62T8fllGVvvx/videos/{videoid}.json", params={"videoId": videoid})

# parse the date
date = resp.json()["pageProps"]["video"]["createdAt"]
date = datetime.strptime(date, "%Y-%m-%dT%H:%M:%S.%fZ")
# add 9 hours to match JST
date = date + timedelta(hours=9)
# reformat the date
# https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
date = date.strftime("%Y%m%d%H%M")

print(f"https://d3m2j4lf6xiv21.cloudfront.net/archive/{videoid}/{date}_1080p.m3u8")
3 Likes

Amazing, thanks for the handy script!

That method is still not working for the livestreams but I don’t want to spend 5000yens to check that so it’s nice enough to have access to some of their videos.

sorry for the noob question, but how do i get this script running? i saved it as .py and ran it but get “json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)”

looks like they made the api return empty strings instead of the dates, that means my script doesn’t work anymore