ThetaDev/rustypipe
6
37
Fork
You've already forked rustypipe
12

Extraction error: Request contains an invalid argument #73

Open
opened 2026年01月31日 11:05:58 +01:00 by Schmiddiii · 2 comments

It seems like since yesterday (2026年01月30日), querying the videos of a channel occasionally fails. Which channels fail exactly does not seem to be deterministic. I've attached a debug report of a failing query (an error report does not seem to be generated). One thing I noticed is that it always fails with operation "continuation", but I can still reproduce it without actually paging the pager and only using the first page.

See also this downstream issue.

{
 "info": {
 "package": "rustypipe",
 "version": "0.11.4",
 "date": "2026年01月31日T09:49:41Z",
 "language": "en",
 "botguard_version": null
 },
 "level": "DBG",
 "operation": "continuation(4qmFsgJgEhhVQ3dId0R1TmQ5bENkQTdjaHl5cXVEWHcaRDhnWXdHaTU2TEJJbUNpUTFaamN5TW1WaVlpMW1OREF4TFRkaFpqTXRZemRoT0MxaU9HRTVZek5oTWpJNU5UQVlBU0FF)",
 "error": "extraction error: bad request (Request contains an invalid argument.)",
 "http_request": {
 "url": "https://www.youtube.com/youtubei/v1/browse?prettyPrint=false",
 "method": "POST",
 "req_header": {
 "content-type": "application/json",
 "origin": "https://www.youtube.com",
 "referer": "https://www.youtube.com",
 "user-agent": "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0",
 "x-goog-eom-visitor-id": "Cgs0aDB6WjJzU3VKTSiqoPfLBjIKCgJERRIEEgAgIGLfAgrcAjE1LllUPWlWR25lWHVRbUlFNldLMWlXSDhrZS1nRXR6Z1piYmpKM29uSDRwazloY1V3aUkzMmdJUkVITkgzVzd1dzlDR2wzdURkQ2FiNGNBdWxUVTdNWmtQd183RW5LLU1PR3ZQZXNrWTdfUFhKSl9tOWk0NVp1MGFyM3JfSXJRYlV1Q0x5VHhyZEt3VEtwcDVabkM5bE9hRTE0VFQ3UU8wbXFWX0JXTDRaRldpZ2xYSWNQWFpPTGM2U0hwX3RyQUh2WmZTblN1WDJMSHE0TnhZd01TdEFDVnp0T3hLdXpDa2lBcGszUnBrU1hWQWNuV2pJZWpOWkZRcmRldHREdXUxRXhOUzBDem1tcXRzWjVBZ3ZLcndlLXItc19CUzdHVFlyZVpGMFBBS3NNVDlsRlp6TEsycE5Vell3bmFjYmFhVTJNNWhzTmtnNXpZLW5iNFktX2ZFS3lLWEppdw%3D%3D",
 "x-youtube-client-name": "1",
 "x-youtube-client-version": "2.20260128.05.00"
 },
 "req_body": "{\"context\":{\"client\":{\"clientName\":\"WEB\",\"clientVersion\":\"2.20260128.05.00\",\"platform\":\"DESKTOP\",\"originalUrl\":\"https://www.youtube.com\",\"visitorData\":\"Cgs0aDB6WjJzU3VKTSiqoPfLBjIKCgJERRIEEgAgIGLfAgrcAjE1LllUPWlWR25lWHVRbUlFNldLMWlXSDhrZS1nRXR6Z1piYmpKM29uSDRwazloY1V3aUkzMmdJUkVITkgzVzd1dzlDR2wzdURkQ2FiNGNBdWxUVTdNWmtQd183RW5LLU1PR3ZQZXNrWTdfUFhKSl9tOWk0NVp1MGFyM3JfSXJRYlV1Q0x5VHhyZEt3VEtwcDVabkM5bE9hRTE0VFQ3UU8wbXFWX0JXTDRaRldpZ2xYSWNQWFpPTGM2U0hwX3RyQUh2WmZTblN1WDJMSHE0TnhZd01TdEFDVnp0T3hLdXpDa2lBcGszUnBrU1hWQWNuV2pJZWpOWkZRcmRldHREdXUxRXhOUzBDem1tcXRzWjVBZ3ZLcndlLXItc19CUzdHVFlyZVpGMFBBS3NNVDlsRlp6TEsycE5Vell3bmFjYmFhVTJNNWhzTmtnNXpZLW5iNFktX2ZFS3lLWEppdw%3D%3D\",\"hl\":\"en\",\"gl\":\"US\",\"timeZone\":\"UTC\",\"utcOffsetMinutes\":0},\"request\":{\"internalExperimentFlags\":[],\"useSsl\":true},\"user\":{\"lockedSafetyMode\":false}},\"continuation\":\"4qmFsgJgEhhVQ3dId0R1TmQ5bENkQTdjaHl5cXVEWHcaRDhnWXdHaTU2TEJJbUNpUTFaamN5TW1WaVlpMW1OREF4TFRkaFpqTXRZemRoT0MxaU9HRTVZek5oTWpJNU5UQVlBU0FF\"}",
 "status": 400,
 "resp_body": "{\n \"error\": {\n \"code\": 400,\n \"message\": \"Request contains an invalid argument.\",\n \"errors\": [\n {\n \"message\": \"Request contains an invalid argument.\",\n \"domain\": \"global\",\n \"reason\": \"badRequest\"\n }\n ],\n \"status\": \"INVALID_ARGUMENT\"\n }\n}\n"
 }
}
It seems like since yesterday (2026年01月30日), querying the videos of a channel occasionally fails. Which channels fail exactly does not seem to be deterministic. I've attached a debug report of a failing query (an error report does not seem to be generated). One thing I noticed is that it always fails with operation "continuation", but I can still reproduce it without actually paging the pager and only using the first page. See also [this downstream issue](https://gitlab.com/schmiddi-on-mobile/pipeline/-/issues/297). ```json { "info": { "package": "rustypipe", "version": "0.11.4", "date": "2026年01月31日T09:49:41Z", "language": "en", "botguard_version": null }, "level": "DBG", "operation": "continuation(4qmFsgJgEhhVQ3dId0R1TmQ5bENkQTdjaHl5cXVEWHcaRDhnWXdHaTU2TEJJbUNpUTFaamN5TW1WaVlpMW1OREF4TFRkaFpqTXRZemRoT0MxaU9HRTVZek5oTWpJNU5UQVlBU0FF)", "error": "extraction error: bad request (Request contains an invalid argument.)", "http_request": { "url": "https://www.youtube.com/youtubei/v1/browse?prettyPrint=false", "method": "POST", "req_header": { "content-type": "application/json", "origin": "https://www.youtube.com", "referer": "https://www.youtube.com", "user-agent": "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0", "x-goog-eom-visitor-id": "Cgs0aDB6WjJzU3VKTSiqoPfLBjIKCgJERRIEEgAgIGLfAgrcAjE1LllUPWlWR25lWHVRbUlFNldLMWlXSDhrZS1nRXR6Z1piYmpKM29uSDRwazloY1V3aUkzMmdJUkVITkgzVzd1dzlDR2wzdURkQ2FiNGNBdWxUVTdNWmtQd183RW5LLU1PR3ZQZXNrWTdfUFhKSl9tOWk0NVp1MGFyM3JfSXJRYlV1Q0x5VHhyZEt3VEtwcDVabkM5bE9hRTE0VFQ3UU8wbXFWX0JXTDRaRldpZ2xYSWNQWFpPTGM2U0hwX3RyQUh2WmZTblN1WDJMSHE0TnhZd01TdEFDVnp0T3hLdXpDa2lBcGszUnBrU1hWQWNuV2pJZWpOWkZRcmRldHREdXUxRXhOUzBDem1tcXRzWjVBZ3ZLcndlLXItc19CUzdHVFlyZVpGMFBBS3NNVDlsRlp6TEsycE5Vell3bmFjYmFhVTJNNWhzTmtnNXpZLW5iNFktX2ZFS3lLWEppdw%3D%3D", "x-youtube-client-name": "1", "x-youtube-client-version": "2.20260128.05.00" }, "req_body": "{\"context\":{\"client\":{\"clientName\":\"WEB\",\"clientVersion\":\"2.20260128.05.00\",\"platform\":\"DESKTOP\",\"originalUrl\":\"https://www.youtube.com\",\"visitorData\":\"Cgs0aDB6WjJzU3VKTSiqoPfLBjIKCgJERRIEEgAgIGLfAgrcAjE1LllUPWlWR25lWHVRbUlFNldLMWlXSDhrZS1nRXR6Z1piYmpKM29uSDRwazloY1V3aUkzMmdJUkVITkgzVzd1dzlDR2wzdURkQ2FiNGNBdWxUVTdNWmtQd183RW5LLU1PR3ZQZXNrWTdfUFhKSl9tOWk0NVp1MGFyM3JfSXJRYlV1Q0x5VHhyZEt3VEtwcDVabkM5bE9hRTE0VFQ3UU8wbXFWX0JXTDRaRldpZ2xYSWNQWFpPTGM2U0hwX3RyQUh2WmZTblN1WDJMSHE0TnhZd01TdEFDVnp0T3hLdXpDa2lBcGszUnBrU1hWQWNuV2pJZWpOWkZRcmRldHREdXUxRXhOUzBDem1tcXRzWjVBZ3ZLcndlLXItc19CUzdHVFlyZVpGMFBBS3NNVDlsRlp6TEsycE5Vell3bmFjYmFhVTJNNWhzTmtnNXpZLW5iNFktX2ZFS3lLWEppdw%3D%3D\",\"hl\":\"en\",\"gl\":\"US\",\"timeZone\":\"UTC\",\"utcOffsetMinutes\":0},\"request\":{\"internalExperimentFlags\":[],\"useSsl\":true},\"user\":{\"lockedSafetyMode\":false}},\"continuation\":\"4qmFsgJgEhhVQ3dId0R1TmQ5bENkQTdjaHl5cXVEWHcaRDhnWXdHaTU2TEJJbUNpUTFaamN5TW1WaVlpMW1OREF4TFRkaFpqTXRZemRoT0MxaU9HRTVZek5oTWpJNU5UQVlBU0FF\"}", "status": 400, "resp_body": "{\n \"error\": {\n \"code\": 400,\n \"message\": \"Request contains an invalid argument.\",\n \"errors\": [\n {\n \"message\": \"Request contains an invalid argument.\",\n \"domain\": \"global\",\n \"reason\": \"badRequest\"\n }\n ],\n \"status\": \"INVALID_ARGUMENT\"\n }\n}\n" } } ```

This seems to happen to every channel now. @ThetaDev if there is anything I can do to help debug or fix this issue, please tell me. But I'm not that familiar with the YouTube API, so I'm not sure I can help.

This seems to happen to every channel now. @ThetaDev if there is anything I can do to help debug or fix this issue, please tell me. But I'm not that familiar with the YouTube API, so I'm not sure I can help.

I found a workaround: Use channel_videos instead of channel_videos_order, which seems to be the same when using ChannelOrder::latest. Potentially the order_ctoken computation got changed by YouTube.

I found a workaround: Use `channel_videos` instead of `channel_videos_order`, which seems to be the same when using `ChannelOrder::latest`. Potentially the `order_ctoken` computation got changed by YouTube.
Sign in to join this conversation.
No Branch/Tag specified
main
feat/deobf-extractor
abr-streaming
abr-streaming-wip
feat/timezone
feat/oauth
feat/http3
feat/postprocessor
feat/channel-tv
rustypipe/v0.11.4
rustypipe/v0.11.3
rustypipe/v0.11.2
rustypipe-cli/v0.7.2
rustypipe/v0.11.1
rustypipe-cli/v0.7.1
rustypipe-downloader/v0.3.1
rustypipe/v0.11.0
rustypipe-cli/v0.7.0
rustypipe-downloader/v0.3.0
rustypipe/v0.10.0
rustypipe-cli/v0.6.0
rustypipe-downloader/v0.2.7
rustypipe/v0.9.0
rustypipe-cli/v0.5.0
rustypipe-downloader/v0.2.6
rustypipe/v0.8.0
rustypipe-downloader/v0.2.5
rustypipe/v0.7.2
rustypipe/v0.7.1
rustypipe-cli/v0.4.0
rustypipe-downloader/v0.2.4
rustypipe/v0.7.0
rustypipe-cli/v0.3.0
rustypipe-downloader/v0.2.3
rustypipe/v0.6.0
rustypipe-cli/v0.2.2
rustypipe-downloader/v0.2.2
rustypipe/v0.5.0
rustypipe-cli/v0.2.1
rustypipe-downloader/v0.2.1
rustypipe/v0.4.0
rustypipe-cli/v0.2.0
rustypipe-downloader/v0.2.0
rustypipe/v0.3.0
rustypipe/v0.2.1
rustypipe-cli/v0.1.1
rustypipe-downloader/v0.1.1
rustypipe/v0.2.0
rustypipe/v0.1.3
rustypipe/v0.1.2
rustypipe/v0.1.1
rustypipe-cli/v0.1.0
rustypipe-downloader/v0.1.0
rustypipe/v0.1.0
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ThetaDev/rustypipe#73
Reference in a new issue
ThetaDev/rustypipe
No description provided.
Delete branch "%!s()"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?