Skip to content

CB rate-limit fix #273

Open
medi0x1 wants to merge 4 commits intolossless1024:masterfrom
medi0x1:fix-chaturbate-rate-limit
Open

CB rate-limit fix #273
medi0x1 wants to merge 4 commits intolossless1024:masterfrom
medi0x1:fix-chaturbate-rate-limit

Conversation

@medi0x1
Copy link

@medi0x1 medi0x1 commented Dec 4, 2025

TL;DR

CB started rate-limiting hard. Added sane pacing, real browser headers, nd proper cookie/session flow so it stops yelling 429.

Changes:

Slowed playlist polling + jitter
Init cookies by hitting model page first
Real headers (Referer, Origin, etc.)
Persistent Session() instead of rapid-fire requests
Backoff instead of brute retry
ffmpeg gets headers only if needed

okdanke

@NBAMVP
Copy link

NBAMVP commented Dec 10, 2025

image image Why after I replaced your code, Chaturbate shows an error in the console? I also tried the latest version released by the author, but it says it requires a key. I don't know how to get/make the key, so I switched back to the old version

@medi0x1
Copy link
Author

medi0x1 commented Dec 10, 2025

That error happens if only chaturbate.py is replaced.
My PR updates two files (chaturbate.py + ffmpeg.py) and they must be used together.
If you mix old/new code, CB shows the “requires a key” error.
Update both files nd it will work.

@NBAMVP
Copy link

NBAMVP commented Dec 10, 2025

ffmpeg.py
"G:\MT\StreaMonitor\stream
log.txt
onitor\downloaders\ffmpeg.py"
chaturbate.py
"G:\MT\StreaMonitor\streamonitor\sites\chaturbate.py"
image

I don't know why, I've already replaced the code with the one you gave me (chaturbate.py + ffmpeg.pybut it's still not working in reality

@medi0x1
Copy link
Author

medi0x1 commented Dec 10, 2025

Your chaturbate.py isn’t the updated version, it’s missing the HLS-stall recovery block (hls_failures) & the cookie reset path.
With that code missing, CB returns public + empty url nd the recorder gets stuck on “Error on Download”
Pull the latest file from my PR #273 and replace it.

@NBAMVP
Copy link

NBAMVP commented Dec 10, 2025

ec844c2
Are you talking about this one?
chaturbate.py
ffmpeg.py
image
but it's still not working in reality

@medi0x1
Copy link
Author

medi0x1 commented Dec 10, 2025

Yeah, your CB + ffmpeg files look correct.
Just need to check one thing on your side:

Does the recorder start normally at least once? Or does it immediately show “Error on downloading” even though the model is online?

If it errors right away, that usually means StreamMonitor is still using the old file.
Make sure you fully stop the script and restart it after updating not just save the file.

If it does record once and then fails later, that’s just CB being slow to update between public/private/offline. Tell me which one you're seeing.

@NBAMVP
Copy link

NBAMVP commented Dec 10, 2025

It shows an error immediately, but I've already updated to the latest version
[Downloader.py](https://github.com/u
chaturbate.py
ser-attachments/files/24088682/Dow
ffmpeg.py
nloader.py)
image

@medi0x1
Copy link
Author

medi0x1 commented Dec 10, 2025

Can you kill everything and run it clean once? Just to be sure:
Stop all running python/StreamMonitor processes & Start it again fresh
Let one CB model run until it errors....
Send me the log lines from that moment
mine is running fine, so the issue might be local bad cache, stuck process, or even disk/path problems. With the logs I can see exactly where it fails.
bigos

@NBAMVP
Copy link

NBAMVP commented Dec 10, 2025

log.txt
image
Will it conflict with StripChat models?
In the screenshot, I have already paused all recordings, but the StripChat girls are still showing as 'recording/recording ended' in the console/log, even though I paused everything

@medi0x1
Copy link
Author

medi0x1 commented Dec 10, 2025

No, it doesn’t conflict with SC at all they’re completely separate handlers. What you’re seeing is just the UI still showing the last known state. SC takes a bit longer to refresh its status, so even if u pause everything, the UI can still show “recording ended” for a moment until the next poll updates it...

It won’t affect CB or the PR. The real issue is still that the CB module isn’t running on your side ur log only shows SC activity. Once CB actually loads, you’ll see [CB] modelname lines in the console.

&& I saw the CB line in your log (french_riv1era: Error on downloading), but that’s the only Chaturbate entry in the whole file. That means the CB handler started once, failed, and then never ran again.
When the updated chaturbate.py is actually loaded, you should see regular lines like:

[CB] model: No stream
[CB] model: Channel online

every few seconds. Since none of that appears, the updated file probably isn’t being used.

Please make sure this file is replaced: [[streamonitor/sites/chaturbate.py]]

and fully restart StreamMonitor.
Send the next log after a full restart so we can see what CB is doing.

@NBAMVP
Copy link

NBAMVP commented Dec 10, 2025

image I even restarted my computer, but it still doesn't work.

log.txt

Downloader.py

chaturbate.py

ffmpeg.py

@medi0x1
Copy link
Author

medi0x1 commented Dec 11, 2025

Your log shows CB never sends you a valid HLS URL,,the API response has no url, so the downloader instantly errors. Something on your system is blocking or intercepting CB HTTPS traffic (proxy/AV/firewall/router). The code is fine SC works, only CB fails.

Run this and send the raw output so we can see what CB is actually returning:

import requests

model = "veronicamartin_"   

r = requests.post(
    "https://chaturbate.com/get_edge_hls_url_ajax/",
    data={"room_slug": model, "bandwidth": "high"},
    headers={
        "User-Agent": "Mozilla/5.0",
        "X-Requested-With": "XMLHttpRequest",
        "Referer": f"https://chaturbate.com/{model}/"
    }
)

print("STATUS:", r.status_code)
print("RESPONSE:", r.text)

@NBAMVP
Copy link

NBAMVP commented Dec 11, 2025

I tried to run the code you gave me on Windows CMD, but it didn't accept the heredoc (<<EOF) syntax, so I pasted line by line and it obviously failed.

This is exactly what happened in CMD:

Microsoft Windows [Version 10.0.19045.6691]
(c) Microsoft Corporation. All rights reserved.

G:\MT\StreaMonitor>python - <<EOF
'<<' is not recognized as an internal or external command,
operable program or batch file.

G:\MT\StreaMonitor>import requests
'import' is not recognized as an internal or external command,
operable program or batch file.

G:\MT\StreaMonitor>print(requests.post("https://chaturbate.com/get_edge_hls_url_ajax/", data={"room_slug": "kissme_cutie", "bandwidth": "high"}).text)
The device PRN cannot be initialized.

G:\MT\StreaMonitor>EOF

@medi0x1
Copy link
Author

medi0x1 commented Dec 11, 2025

Try this Windows version.
Save the snippet below as cb.py, run it in PowerShell with:
py cb.py If it doesn’t return clean JSON, your machine/network is blocking CB’s API.

import requests

model = "veronicamartin_"   

r = requests.post(
    "https://chaturbate.com/get_edge_hls_url_ajax/",
    data={"room_slug": model, "bandwidth": "high"},
    headers={
        "User-Agent": "Mozilla/5.0",
        "X-Requested-With": "XMLHttpRequest",
        "Referer": f"https://chaturbate.com/{model}/"
    }
)

print("STATUS:", r.status_code)
print("RESPONSE:", r.text)

@NBAMVP
Copy link

NBAMVP commented Dec 11, 2025

Microsoft Windows [版本 10.0.19045.6691]
(c) Microsoft Corporation。保留所有权利。

G:\MT\StreaMonitor>python
Python 3.12.7 (tags/v3.12.7:0b05ead, Oct 1 2024, 03:06:41) [MSC v.1941 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

import requests
model = "kissme_cutie"
r = requests.post("https://chaturbate.com/get_edge_hls_url_ajax/", data={"room_slug": model, "bandwidth": "high"}, headers={"User-Agent": "Mozilla/5.0", "X-Requested-With": "XMLHttpRequest", "Referer": f"https://chaturbate.com/{model}/"})
print("STATUS:", r.status_code)
STATUS: 403
print("RESPONSE:", r.text)
RESPONSE: <title>Just a moment...</title><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;padding-left:1.5rem;max-width:60rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{line-height:2.25rem;font-size:1.5rem;font-weight:500}@media (width <= 720px){.h2{line-height:1.5rem;font-size:1.25rem}}#challenge-error-text{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0IyMEYwMyIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjQjIwRjAzIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+");background-repeat:no-repeat;background-size:contain;padding-left:34px}@media (prefers-color-scheme: dark){body{background-color:#222;color:#d9d9d9}}</style>

Enable JavaScript and cookies to continue
<script>(function(){window._cf_chl_opt = {cvId: '3',cZone: 'chaturbate.com',cType: 'managed',cRay: '9ac0e9a85f331dd6',cH: 'Pt3SMHAQWHNH3mLiJgOlw95kj89olOPiL7TarH9PRCY-1765413438-1.2.1.1-sgXdlCLHdKh_mln4IQiI9OsG0RRxv6f5zN_38dky3fx7YeITAo0TN6G8M8efyKzt',cUPMDTk:"/get_edge_hls_url_ajax/?__cf_chl_tk=sOHMgEtlDkF4LW3EkBlNQD4NklA7EXNTsw90VyJ9H3Q-1765413438-1.0.1.1-OY5NzUwqJzh4_P69xkVhmgYGU6KJHrcN1gE8DpLMVaM",cFPWv: 'g',cITimeS: '1765413438',cTplC:0,cTplV:5,cTplB: '0',fa:"/get_edge_hls_url_ajax/?_cf_chl_f_tk=sOHMgEtlDkF4LW3EkBlNQD4NklA7EXNTsw90VyJ9H3Q-1765413438-1.0.1.1-OY5NzUwqJzh4_P69xkVhmgYGU6KJHrcN1gE8DpLMVaM",md: 'JMR6fvcuKUWizYQb6M0NYqRL3mDB5s9rHfDkAHbd5PA-1765413438-1.2.1.1-A9xpg4d1trEROKtjH4KwdFE3U_Ci1rlLUj1Si2gnamEMGee4eS.ZZ7NCHErzVkn2T_z_jcYT4Aj.vq846vUEQcIOgYINgqjNnQQWoqVieMkGIB9fLyJ6QCsevJbydNScwfhTD.JaWbCu8nzUpcK3qVuP5edBzICaYouzy97o1bNvqjPuweYmb3BsJ4T_kwlzHBqagDudC_9KpcqhwptDZi2otwvcJSvjxizaLPWJdHjV4P6QDqJ4Z_u7dHqFNWc0jWjHUJHTI4hpejokDFahY8tmGCzWIeI810nV0LLfeXofnM5hQRDWnUaOLEqPPRaEiV.ykJO.pzSG_wJXEdGvbZr.M1r5suKqLPxqt8_F4Wap1ZnDzKIYKuOOgCnzdro5fS7hiOwrItAn4OOjPMKmo0.kCMbnPea_eTmwvC8QHuvaC1GOxuGm_D5SrZ1aHPLwnhU0RAsPYb9IqWoPnDlSjJNAhBLuHAgse8BH0M3DSENH0Rj8ABtYzaP0pcN1dnCZC.tgIF516ECNzAHJ_Hte3sxRLVPAqEpGeSh_0O8kxGUnPxNzBizhO3MkZmsqHn1bCM9mX9LoDGTnZ5Qf7ud.MMz9QMyKOKnReJgluZuxlkn2DRTi_DQtB.03PknGSIxwx47wbvmMKAmQFxd4vstCQYp7kVVC6UqW4GC0dh6KZxmozE8kIbQ9fBiVFkzapCkZkrieVKDtJXzt.0oL_gFwBC41oqLjCQb_a5jIWlFuFzSa7vsfLIlSW7GmWsmNtgsRUwV5sOSzZt9.WFgAz17rXgG8BXrmxMVKc_shHvIF8YuISFrZIJq_pzbIoZbK.2llmddtdr6I1AWoBnU9os4sS_6.t1vbC.9k2IovOMXknlhgZU0QCUJbqZBG1wfyIR9Lrbvfx3vNCnjfWE6_2CKAIStGJvIfdb_QLNkfOBkwoNoXcFLj7hfqqjNfU.varjt4',mdrd: 'bkh.5dPAVKE78dpECcH4acpucISmUezxQCqOxIMEKio-1765413438-1.2.1.1-opBGEtRiryPX.FqqL.iy9vfG5qqpo527hde0ayYngsGOCbgGv5d8ogFxs1WR5UOgyul9tGZKNRmX4pZCdM6vQYtfOpNaZyZMj6BanQ9dBVxKzfnEjZ9OAkhrpBEx2Th4HVX4lkX22wsaA9xuFGHgWq3oDLFBJf4N7Cfxk43Y20Kdyr1EWn9Dt1QRFqcSWp_c3ybJJRVkfokUy0WW4_M5bUo2wXSvj3hytQjMuoj4vGtBWoHAEchalZn6inJ2ycN67pfi5lvyH.V7bFscROnRC3KzG07UdB0KAQ.ohg.UpHRovQbINIahYgMvXfManqksO7EOG1PGR4Pu6h7s5oRK8yBkATfHsB8eJNsAM2HXKTMdBx.nX0bImvgLDH0cfxg75rz.qEwnt2vINUv6woWcrkA4N4vHJGveGSup3HzSwyp6YZ8DAkHSXIY6oHMfQy7j_3s4lxZJb5jk77sHpnd_unhV.36uc_lgEemdnougJJixGPUJNMs353xaxNJbIeENBnC99g.z8bslslVs.GrmE7w5AGnpyAhzOMslOPhlnvxwhgNE95hQPxsGrGBlZp.rvJxv3Mo.0LRv96WT.BLSJss9bA5fBuoDlEaAGoNeWN5huyA29dCo9RoLfSKavgognG99bpDyEb8YU3S0NoJ3Z3UeNmxw5.nEkQLe3oBh1XGatR6FVWhkdJvCgTetYygY.9A9E5RSzsZlaSsiM4BQocHG_KIsOgIQOuFFrfJb0EOci2cUvHaEYmNTwakD9_BTk8iCwRs1rRrOkqF5BGsIdb8OwstffLGT4xiho3ErG8Qdnqxk9wnB7BG.HJNhW8OSyzpF_MZuKPsI.wfe62fMHc8K3e3ymPShuE76nFEYgoI6VFaxzXThbPFg2itUKbusgynYkNz3cmEpA4j_bg7ZpnaYgliyze8FNHbBQzRd_j6IYdaYLGq95xFEGgInuncEriy7h0F6oWpWLCpzB_6d1sV21lpRTJnDfnFY6d6y2gWm4mQbwY3u4vnZ77znt7sSti1mrQSYl9xoa0aj2.J_7Er3W7Es7o5nTVzzAOH5cY846wjI006MvgApeznQkbOqQ4_uVyn9beYxIGlInX2KYqDuc.2BghGYeHSOuFYkVma3gWLLW0AQtgH.pZt7Pr4I2nUsFcKyyadSoo_pG0w94L6HPYzY2Dg9ERaqWe7RGu5tc9dKbjW0Kq7acbT3hi1fRrzQuMtGULiLbrILWCAbwD0BSPae1bKolnPZTXqfaJmOU9ZLwhF22ixTbjDlJNCKAPgJLXy7DXGbRrMbKc9CaKGLICB3wz8fZUQ6igZOmIjHMEBzfstAAWiF7q3vgYQUNDhCjJbhvhtBsp.._3d6XcHSlHpUxAroLXvxwk6C5fchL1Rnw8J09hcUjr0RS9mQmC0pt51IfQUTTeib0kPqIdTBZyU0_AosTAKXZ3b10KF_GVf_wVcUBvpqbcALYUh_6SwbmLHJTsgktY.pOCpjcpmz9PWMFAugctyyFpy31PM2eak8mqq2ukL32s.bYS3mipkRO3fryV8IUeId_nufsPxe3TfXh2PRBjhbVSqTJlI7wng0y7y5UBEkayIcRDR6OYxfj3RTt4UNERdv4egR40tSazL6mjg9RyYQqhpcBns.fNRPBgEH1IWYUs5d_ua.d2KA1m3arHIltoUs7bbcOyNkHqAro_r9EYqGbcr.iK0g_wb_ec94rNNpVsD_FFPIRHI.zI5W5unAD1rSic3eX4GYQE4ZaGyU1IUyqiFELbCAbfZ5JffD2gaIIFSZlbaxvUN5BHQJzNSdx_K0aI1oIg7VbozLM5Uj19tMABrRwjGHIh2MwHr2CQZzrel_QBaRhYvntPFxlVXl.ajROc1ThxTWLHwN82vu7TNSgMsOrB174FMUka2LbJC5JcOmLB3owdVDsG_qD5g5teo7IzdQ3IrYGR_hRuMXqWge57UtNi8xRAmn1yD2Ba6tyuS9B3pqvzDOSx94u4RxmEuxViXmsAJPQgSCwy0IZcaAxgv_2ezFBkiFAXzAEpxgBoGKxAeKMHlmwYx9OCHIlEx4zaiQ8JmSHtycXjKIx6ZiF8adwN.eH4x_5FPHZ.m9kx7nk1oxb10x_abaAZvyH4SWNr0d8aYeNLkSntD865fUodTeBQF3bcSsCjFCgT9.W0dunJy2F7lIc.b5Y.5jXXLNUP6_8u2h8hutpdzgkzK66O7ED2pb6mfUdCU.jaNO3NJmQNLAIs14cQzk6tYRc0uCF2._yZDjQ4yfzvIdSxjPWSP8koj0Al7pxPU.bLHXeGInN81jb3An0wej3Yl4pcLmvErfCQq2T.EEVEVaXqcGDMTwxWuIfHNUECA9zW1pfYrYPZ3Hj9JpnLKqjOfkRJK9FHwqGdfBquNTuh_PutAsdzPaU2XsVLpXEbbAS9wVI4J_FKiqo2nnpgUQAnvFhXk_yvR8rVdLzFe1CJWEU5j39HZ4I3ekkpHpes2qhxBqIWgtnxcPZgTlRpQkyOdmwWJaEl_2iskBTnTsC32ysfuO2IN_Z8',};var a = document.createElement('script');a.src = '/cdn-cgi/challenge-platform/h/g/orchestrate/chl_page/v1?ray=9ac0e9a85f331dd6';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null,"/get_edge_hls_url_ajax/?__cf_chl_rt_tk=sOHMgEtlDkF4LW3EkBlNQD4NklA7EXNTsw90VyJ9H3Q-1765413438-1.0.1.1-OY5NzUwqJzh4_P69xkVhmgYGU6KJHrcN1gE8DpLMVaM"+ window._cf_chl_opt.cOgUHash);a.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(a);}());</script>

@NBAMVP
Copy link

NBAMVP commented Dec 11, 2025

G:\MT\StreaMonitor>python test_cb.py
STATUS: 403
RESPONSE: <title>Just a moment...</title><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;padding-left:1.5rem;max-width:60rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{line-height:2.25rem;font-size:1.5rem;font-weight:500}@media (width <= 720px){.h2{line-height:1.5rem;font-size:1.25rem}}#challenge-error-text{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0IyMEYwMyIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjQjIwRjAzIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+");background-repeat:no-repeat;background-size:contain;padding-left:34px}@media (prefers-color-scheme: dark){body{background-color:#222;color:#d9d9d9}}</style>

Enable JavaScript and cookies to continue
<script>(function(){window._cf_chl_opt = {cvId: '3',cZone: 'chaturbate.com',cType: 'managed',cRay: '9ac0ec689a54a28e',cH: 'mQCxisKnQ8AYvedG9cGMI80DRQMVq4DrD_IOoT3_9Ic-1765413551-1.2.1.1-y8HQKK22orpA2eYPEM.Y19ShKc4baqUjhwrV.2Nzq5.vteB5z1IlBk9OHI7OzFjF',cUPMDTk:"/get_edge_hls_url_ajax/?__cf_chl_tk=2Igkc1YbUdg01_l6NRHuReBIunlKqCaG0wvO.LRNfqE-1765413551-1.0.1.1-r8xJjHPcU0hEHgqlKP4czoo7ATARYOj9DbRcutyJu1w",cFPWv: 'g',cITimeS: '1765413551',cTplC:0,cTplV:5,cTplB: '0',fa:"/get_edge_hls_url_ajax/?cf_chl_f_tk=2Igkc1YbUdg01_l6NRHuReBIunlKqCaG0wvO.LRNfqE-1765413551-1.0.1.1-r8xJjHPcU0hEHgqlKP4czoo7ATARYOj9DbRcutyJu1w",md: 'iG6MsAX7sYV2i5UuUszVCX.DBMNmf098oHLN8j1Xs60-1765413551-1.2.1.1-nwZ03pFEXJJq.plrAlOR2t9P83xamFFZxg_u4bjRvBCPQWtadm1D751EP0FcTNrsVYUJr8C4EYF9quKTmybTBVz9_TWx_C1rEHLxLkqsrraBd9cWikSbssdvMJKgV9HYTZ1yBEi_Tn3m0.BepMdilZG8bfo7lo.qynwGLsdXYCWO3bMC3_CqOt7_a0dEeU9DZMriTOxuVL1i4a01AmmlcL9TdbTAsBw4r9Rk12A525B3KhWbIsTzsXPd5pS6DNFZfb7MsKsQ81HtHElg5WaToRPJcG92RqTdTl8ygvvIQ1zUO1sEz2qOF8ON_sjWydd96VzsJAxt8O.rZrbjVktK4d.jMsXVrxJYxl1xZp1TwPLV4p8zxDMVQqy_a2.UTdDnowDl4AUCDoSLi8DAeE43x0w4wRIgeUhoiFbwXwZIDfRPdrylxmktxV_GikXpByODq8RGhDpMtEJzmyxOu_jAwpDibGYgWFMkigT998MOfyfpYQUc6OzSTolGNP_uniexeb0TDZVwO2qXqmkalWNGz2Z89_6a.BkaKowPfnrhkVUOTM2GOy6wB06B67JEMXDVo6xJ4rOsjihmfIxuWSsFafI6HGx1hwCRBa6.C0.QxJNzOdOveAHgBTX2qSxCZ7ih7TnE6Gy48PRFvZWoBeigFFVI1BdheDvbdlWbwz6bv0_MnVSVL0cwH5RSLuAbZkPpg56QVcv0EeZ_0oOtHcH48SdRUU9AvgO7NrkEMmd5jgW25PXM9QIHqVXDbXbZPz4_X2QfECgRyhxeU7ODIhc2zn9iaQDDtvx1BEDEqufGoDORhKizr5X1ff2EQAahzugzeAGqK3hzO09Hd0LgclzEBffNwahe9yIQqhrXxDwU9bheHs6NhXW81FLgU.v.IdUZZAm_R3hsyBPxHaECvIwoH0bR0AENghntI06Cm7V1kNBBHYtpF08xFoLp7Ljr607Zj1TfQjzY6b1L5ECA6cekz8v1LLNyJ_Tv5b.0IQ53Ag21qZ_3q6ELoop3YR7jf9vp',mdrd: 'mix67z3adH_rOVGB3g2YZNSzYStHDS1gLaVONuckgE8-1765413551-1.2.1.1-e_zIqlTU8RgBdvloeeSASvmm4jw7XNApqo9.DtXjRJKn0qaatfL6Tp2b3VMg3OXsZPjsIdkPbGV5E6NRpEXx7nfGkL_vonhMXtfgz1hXCCvSlZpzPsIpbCR6P9ijERdCm2Q_aEoJ5Gkfqsq19wF90zE4oigvD1DewEm7SisPF9NdsZ7iz2zqjloUiIPkIaH6v6E.Ifb4zFZz3AEsSsc4Pe2m2QxDseq4TO9K2jLfsCbB_RMO0mnvqCdrslHlGbxHyDPZqfzPAuAzqS9Lb3gGmDWy8LZsGerBsvTTZ.WEjF74eHBluWXWh09Dkv8F5FqOd6UaCHG67R_HQo90987.gKKfPTVrAyI6iKYWvZjZ72pn4OR.WkuSPW85ikmxIKn8typFTTkKcrS3JFdDyl7UxgJNraLAGJW.TRhSgUy25Z5kFe9uoaeRvy8HbrLi0lyyo4CgZ2yrHaao8DVii4w4n8pYUz6eobWW18lN1g197E9AXQMyLPhG7qz3wYetrGzjdeMYHUUFYsNue04GMIFLe38NFiyGm1Y3KrisVhvkERRz1Zr9.EZPSFbC5bAvyPm9AMaaz5zRmvA3ad8OFefitI9L0ogpT9kzrnLwDerTi74BjozxQNd7dv1Jw7pnC3PT6CqZx9fL9gTEW8eKgnzZIAWoTEG9oPSR0147pGDszepDuTC.9aYaoc3dpaYXcPMFIFSPtnFde_X.wc6z9ZZKp.0K_OGecF5DXqW4m7cGGgbKF2Ru5oB7Vg0oqzVXQPM8IIs3IwhKAl7EzTVmjoHVSUanF7yXYsBhMqbEb.ncuBNiVBYdSfoSbnV4m9yjrYPExH7gGivwq0QNGwdrMIbRo2GUkpweOGnIgcNg2c2GxyPbmODJnw1qHwRnvm7ZazJk2Qgyxs0F8_a8864ixev59wLvo31ItoAn8K34n05gmS.m5Y0H7Wij0XZWIA3lS72R4Yakj1y8gdWOv.42.eBhNeE39G_GPZJKKE4i.xYeUd46JayfB7CIwYOaTObch2MYue3MFHnVim0SHxDHcYwPFEba_UYDjiIf5UsLPGVvFjLKoAU6Y4l0vMqoVHRvSm3V2H6683JjnukdIJ8yCtgg6wUGLEdaayTxtKoTAbj_hMjpPTgLW7uzZKl33IDwH7VnncapRHsH2Q2A8XxYlifGK9HN22ywSn2h.KWpAmVvO9EUDeBSNdhoZWn4xlYumFUDQXDj4TZ.kOBlAtgSEwGGgrNYktbnEtOMFmYp7Lq2Zuo6l.Fqrm18V.nfw7ck8fdOtZmcj1Y5JDQltllJP1Dmu5S6Dx4ZQs9pMmw1b.ajxJvKAPxaCXYuhBYwKo1PRlKrH2sZyIXmY0KLNWubEbx5QOluNjLrJUOKOTErVTjDsLVUcH3gXUxdRWc56kGdgbWJyFgOpzRTxJGAMroOPT8UAl43eUuYCwGf7raK7NspDF6rdcznzi07qPnUinBxccqPjLZiVsOSr5TM7.SWRDl4XeCrrLGVnqW8.JBQe.ZllL4BYPZAjZx.JXSkrVLyUn8CGMM2Kd2VJNBmwpEQcUUFbT4lZtkrfodkuLrPKHiobPupOYI.9tjR8wQUZ_ZqGj4SUVAqg2P5Po_qzk47e1xp8z25D3.ZY8UfwvY7ED7NFyvCm2L98FAaOnYO57Gp07Ge.udcGojXN8BWAwgLtfpBiCocAORHgh4VWY6S1EzPGs6F6zOxIxlFYY4ElQLTJr7EZWok2YOFKUbJNshqwTTb41DeRFZp0dY..o6huhEJJZiK1BAwnYR0uGYJ_xeAjHR5tIMwJlFonpgvOadVPX_pRqlEWhgSJpyz1s7KDhjf8iYsdKIOCedK8QhrAXMzVAr50Uw89N3gSZg.bheSjasFPvJOmbXgT7iNUu_AZz8sPfxAtAxCwtSie.4B2FvvKJdlJbrxeUShMJ6vNWDOsjm1XZsMkEsiyOme284XBEcjHieYdIbxAFbNvRioN4i1r3J3cCPb_JFQxin0a3d8ZlsgA6lYcxs7eFG0edSlW8wBu2PXMX.W0jxOa.rLyh..V8lvKcSZd2x85bThJMWG1IHK4atR6by4DITb9GcOUSUmKCQ9S1GBELIGxTV6AtkHiQdt0bqR5KbO27tFjCYU1j5ftMtLu24rn6TsoHU4qjXVUGtOifbcAGeNdAwhiqFFME25M61PS6z2CrfhKTg_2imr3pNlGVoRQR46m1xcpltohXKNGr7_jlbkKawA_t4b.zxXSynPY69H1iEsYYjmy4YQB4Sb3HsSyXJeGB_LPUe5nCadellBbDo5KVXNXC0AIrGqS_QrjuNM2zk5q_yLtpeh1vfOnpV2cWaUqjN_PIS27217c8DfJOqrTTYzqTc8mUKAPve5djksRyKWS7PZu9WM_WoWRciznkmXw_rdoD0cP32CT98ae04quB8EOJTTcq1_HpjiPqZwBlig91vuvVh9cJQN2W2BhCWbhmAS1SWWW3jAAQrDjjsGgjFuRub4JW6sjBba33Abfy19GkAmZp.FYaJtSTqtG4ssDcPDLG45OTl9QpW0tEccEhy6be7Js0vVg.8ek9mi7nbrIMNJM3dzKbjaBeK.CT5lYcaIoZVx8',};var a = document.createElement('script');a.src = '/cdn-cgi/challenge-platform/h/g/orchestrate/chl_page/v1?ray=9ac0ec689a54a28e';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null,"/get_edge_hls_url_ajax/?__cf_chl_rt_tk=2Igkc1YbUdg01_l6NRHuReBIunlKqCaG0wvO.LRNfqE-1765413551-1.0.1.1-r8xJjHPcU0hEHgqlKP4czoo7ATARYOj9DbRcutyJu1w"+ window._cf_chl_opt.cOgUHash);a.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(a);}());</script>

G:\MT\StreaMonitor>

@medi0x1
Copy link
Author

medi0x1 commented Dec 11, 2025

Yeah, this confirms it’s not a StreaMonitor bug.
Your test script is getting Cloudflare’s challenge page, not Chaturbate’s JSON. That means CF is blocking your IP/session before the request even reaches CB’s backend.
On my side the same script returns a normal 200 with JSON, so the code itself is fine.

TRY TO open the model’s page in a real browser and let Cloudflare pass you/ Restart StreaMonitor so it loads the fresh cookies. If it still blocks change IP (VPN toggle / router restart).
Once CF stops challenging you, the downloader will work normally.

@NBAMVP
Copy link

NBAMVP commented Dec 12, 2025

Hey bro, I’m using this tool to successfully record CB streams, and we’re even on the same network with zero issues. I’ll send you the log and the software link — could you take a look and see if it can be improved

https://github.com/nilaoda/N_m3u8DL-RE

https://github.com/nilaoda/N_m3u8DL-RE
09:24:46.178 INFO : N_m3u8DL-RE (Beta version) 20251029
09:24:46.181 WARN : LivePipeMux detected, forced enable LiveRealTimeMerge
09:24:46.182 INFO : 加载URL: https://edge15-lax.live.mmcdn.com/live-edge/amlst:mary_rosse-sd-51ca023d32a9ba8c36621e72a9b4ec2e8d7a30a71f8459917c044596f17d0b51_trns_h264/playlist.m3u8
09:24:47.197 INFO : 内容匹配: HTTP Live Streaming
09:24:47.198 INFO : 正在解析媒体信息...
09:24:47.199 WARN : 检测到Master列表,开始解析全部流信息
09:24:47.205 WARN : 写出meta json
09:24:47.208 INFO : 已解析, 共计 4 条媒体流, 基本流 4 条, 可选音频流 0 条, 可选字幕流 0 条
09:24:47.209 INFO : Vid 1280x720 | 3396 Kbps | avc1.4d401f,mp4a.40.2
09:24:47.210 INFO : Vid 960x540 | 2028 Kbps | avc1.4d401f,mp4a.40.2
09:24:47.211 INFO : Vid 854x480 | 1258 Kbps | avc1.4d401f,mp4a.40.2
09:24:47.211 INFO : Vid 426x240 | 488 Kbps | avc1.42c015,mp4a.40.2
09:24:49.573 INFO : 正在解析媒体信息...
09:24:49.918 WARN : 检测到直播流
09:24:49.919 INFO : 已选择的流:
09:24:49.919 INFO : Vid 1280x720 | 3396 Kbps | avc1.4d401f,mp4a.40.2 | 3 Segments | ~00m04s
09:24:49.920 WARN : 写出meta json
09:24:49.920 INFO : 保存文件名: mary_rosse_720p_2025-12-12_09-24-45
09:24:49.920 WARN : set refresh interval to 1 seconds
09:24:51.270 WARN : 读取媒体信息...
09:24:51.703 INFO : [0x102]: Data, timed_id3 (ID3 )
09:24:51.704 INFO : [0x100]: Video, h264 (Main) ([27][0][0][0]), 1280x720, 30 fps
09:24:51.705 INFO : [0x101]: Audio, aac (LC) ([15][0][0][0]), 95 kb/s
09:24:52.961 INFO : 已创建命名管道: RE_pipe_6d8b6b9a-ab2b-4400-b9a3-71401a719a09
09:24:52.962 WARN : 通过命名管道混流到 mary_rosse_720p_2025-12-12_09-24-45.ts

Vid 1280x720 | 3396 Kbps 05m27s/05m26s 325/325 Waiting 100% -

@medi0x1
Copy link
Author

medi0x1 commented Dec 13, 2025

Yeah that lines up N_m3u8DL-RE works because it’s using fresh browser cookies, but StreaMonitor is still sending cookies CF doesn’t trust, so CB replies with the challenge page and you get Error on Download.
Open the model page in a normal browser, clear the CF check & restart StreaMonitor so it picks up the new cookies. If it still blocks, it’s just your IP being flagged, switch VPN/router and it’ll behave again.
I’ll check if I can tweak something on my side to make this smoother.

@medi0x1
Copy link
Author

medi0x1 commented Dec 13, 2025

& It looks like the difference is just Cloudflare. The other project you mentioned works because it uses a browser-style request flow, so CF actually lets it through. StreaMonitor uses plain requests, so if your IP is flagged or CF is strict on your edge, the /get_edge_hls_url_ajax/ call will always return the “Just a moment…” page. That’s why it works fine for me but not for you, it’s not the code, it’s how CF treats your IP. I’ll check if there’s anything I can update on my side, but without a browser / CF solver the behavior will always depend on your IP reputation.

@NBAMVP
Copy link

NBAMVP commented Dec 13, 2025

However, the software I’m using isn’t working very smoothly. I often get this error:
WARN : Response status code does not indicate success: 404 (Not Found).
I’m not sure what’s causing it—maybe it’s a network issue.
I’m using N_m3u8DL-RE to record/download. Usually, when I do it from late night to noon, everything works fine without needing a proxy; my local network is sufficient.
But during the rest of the day, it doesn’t work—it either shows very slow speed or no speed at all, and even using a proxy doesn’t help.

03:15:16.757 INFO : N_m3u8DL-RE (Beta version) 20251029
03:15:16.761 WARN : LivePipeMux detected, forced enable LiveRealTimeMerge
03:15:16.762 INFO : 加载URL: https://edge14-fra.live.mmcdn.com/live-edge/amlst:lady_yas-sd-0e1107391e551db6fae05e93aa7f050f8334f14b291f010fc67b4e0f9a422ffc_trns_h264/playlist.m3u8
03:15:17.949 INFO : 内容匹配: HTTP Live Streaming
03:15:17.950 INFO : 正在解析媒体信息...
03:15:17.950 WARN : 检测到Master列表,开始解析全部流信息
03:15:17.952 WARN : 写出meta json
03:15:17.953 INFO : 已解析, 共计 4 条媒体流, 基本流 4 条, 可选音频流 0 条, 可选字幕流 0 条
03:15:17.953 INFO : Vid 1280x720 | 3396 Kbps | avc1.4d401f,mp4a.40.2
03:15:17.954 INFO : Vid 960x540 | 2028 Kbps | avc1.4d401f,mp4a.40.2
03:15:17.954 INFO : Vid 854x480 | 1258 Kbps | avc1.4d401f,mp4a.40.2
03:15:17.954 INFO : Vid 426x240 | 488 Kbps | avc1.42c015,mp4a.40.2
03:15:18.921 INFO : 正在解析媒体信息...
03:15:19.364 WARN : 检测到直播流
03:15:19.364 INFO : 已选择的流:
03:15:19.365 INFO : Vid 1280x720 | 3396 Kbps | avc1.4d401f,mp4a.40.2 | 3 Segments | ~00m04s
03:15:19.365 WARN : 写出meta json
03:15:19.366 INFO : 保存文件名: lady_yas_720p_2025-12-14_03-15-16
03:15:19.366 WARN : set refresh interval to 1 seconds
03:15:21.143 WARN : 读取媒体信息...
03:15:21.199 INFO : [0x102]: Data, timed_id3 (ID3 )
03:15:21.200 INFO : [0x100]: Video, h264 (Main) ([27][0][0][0]), 1280x720, 30 fps
03:15:21.201 INFO : [0x101]: Audio, aac (LC) ([15][0][0][0]), 95 kb/s
03:15:22.886 INFO : 已创建命名管道: RE_pipe_e88c6e82-9415-48fb-8c5e-23fd8ea2a66a
03:15:22.887 WARN : 通过命名管道混流到 lady_yas_720p_2025-12-14_03-15-16.ts
03:29:12.989 WARN : Response status code does not indicate success: 404 (Not Found).
03:29:16.891 WARN : Response status code does not indicate success: 404 (Not Found).
03:29:17.342 WARN : Response status code does not indicate success: 404 (Not Found).
03:29:17.554 WARN : Response status code does not indicate success: 404 (Not Found).
03:29:17.570 WARN : Response status code does not indicate success: 404 (Not Found).
03:41:53.918 WARN : Download speed too slow!
03:41:57.880 WARN : Response status code does not indicate success: 404 (Not Found).
03:41:58.120 WARN : Response status code does not indicate success: 404 (Not Found).
03:41:58.375 WARN : Response status code does not indicate success: 404 (Not Found).

Vid 1280x720 | 3396 Kbps 21m20s/20m48s 1211/1220 Recording 99% 527.46KBps |

@NBAMVP
Copy link

NBAMVP commented Dec 13, 2025

& It looks like the difference is just Cloudflare. The other project you mentioned works because it uses a browser-style request flow, so CF actually lets it through. StreaMonitor uses plain requests, so if your IP is flagged or CF is strict on your edge, the /get_edge_hls_url_ajax/ call will always return the “Just a moment…” page. That’s why it works fine for me but not for you, it’s not the code, it’s how CF treats your IP. I’ll check if there’s anything I can update on my side, but without a browser / CF solver the behavior will always depend on your IP reputation.

By the way, boss, do you have any way to solve this folder-related issue?
#289

@medi0x1
Copy link
Author

medi0x1 commented Dec 13, 2025

already did

@Girtana1
Copy link

Yeah, this confirms it’s not a StreaMonitor bug. Your test script is getting Cloudflare’s challenge page, not Chaturbate’s JSON. That means CF is blocking your IP/session before the request even reaches CB’s backend. On my side the same script returns a normal 200 with JSON, so the code itself is fine.

Hi, really sorry to bump this but what does it mean if I'm getting a good response with the test script but your fixes still aren't working for me?

@medi0x1
Copy link
Author

medi0x1 commented Dec 15, 2025

cant help without logs / screenshots

@Girtana1
Copy link

Girtana1 commented Dec 16, 2025

cant help without logs / screenshots

My apologies I didn't think it would be of any use since the output is the same (immediate error code 1) and enabling debug mode seems to do nothing for getting more verbose info, also like I said your test script seemed to have gave a good response

I've always just used youtube-dl to manually grab these and never required cookies or anything that's why I'm so confused on why this seems so 'complex'

edit: oh my God wow okay, it was due to my ffmpeg being horribly out of date, it's working now even with the original scripts, really sorry about all of this lmao

@HighOnBuffs
Copy link

INFO - manager_cli: Failed to add: StripChat.init() takes 2 positional arguments but 3 were given

any idea how to fix this issue. Thanks!

@medi0x1
Copy link
Author

medi0x1 commented Dec 18, 2025

the issue is now fixed & the PR has been updated. check #268

@medi0x1
Copy link
Author

medi0x1 commented Jan 14, 2026

bro this PR for chatubate.py not stripchat

@NBAMVP
Copy link

NBAMVP commented Jan 14, 2026

bro this PR for chatubate.py not stripchat

Sorry, I'll post a new thread in the questions section.

@b0oby
Copy link

b0oby commented Jan 17, 2026

@medi0x1 does this proxy solution work for you using CB?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants