Skip to content

/v1/analytics/gettests - server replied: Bad Request #2074

@obynio

Description

@obynio

Steps to reproduce

I'm using the latest version komga-1.23.4 and noticed that since komga-1.21.2 there is a regression on the kobo sync with proxying enabled. When enabling the debug option on my kobo and on the server, I can see the following message in my logs and the sync fails.

To me they appears the same, but the version bump clearly shows something is wrong. I wonder if there is something wrong with the way the request is proxyed to kobo ?

Expected behavior

On komga-1.21.2 I get a request that go through

Sep 12 02:05:11 nickel: ( 38.808 @ 0x39e4e78 / packetdump.debug) -------------------------- REQUEST --------------------------- 
Sep 12 02:05:11 nickel: ( 38.808 @ 0x39e4e78 / packetdump.debug) "POST" > To: "https://komga.example.com/kobo/xxx/v1/analytics/gettests" 
Sep 12 02:05:11 nickel: ( 38.808 @ 0x39e4e78 / packetdump.debug) ---------------------- HEADERS ---------------------------
Sep 12 02:05:11 nickel: ( 38.808 @ 0x39e4e78 / packetdump.debug) "Accept-Encoding" : "gzip"
Sep 12 02:05:11 nickel: ( 38.809 @ 0x39e4e78 / packetdump.debug) "Accept" : "application/json" 
Sep 12 02:05:11 nickel: ( 38.809 @ 0x39e4e78 / packetdump.debug) "Authorization" : "Bearer xxx" 
Sep 12 02:05:11 nickel: ( 38.809 @ 0x39e4e78 / packetdump.debug) "Content-Type" : "application/json" 
Sep 12 02:05:11 nickel: ( 38.810 @ 0x39e4e78 / packetdump.debug) "x-kobo-affiliatename" : "RakutenBooks" 
Sep 12 02:05:11 nickel: ( 38.810 @ 0x39e4e78 / packetdump.debug) "x-kobo-appversion" : "4.38.23171" 
Sep 12 02:05:11 nickel: ( 38.810 @ 0x39e4e78 / packetdump.debug) "x-kobo-deviceid" : "xxx"
Sep 12 02:05:11 nickel: ( 38.810 @ 0x39e4e78 / packetdump.debug) "x-kobo-devicemodel" : "Kobo Clara 2E" 
Sep 12 02:05:11 nickel: ( 38.810 @ 0x39e4e78 / packetdump.debug) "x-kobo-deviceos" : "4.1.15" 
Sep 12 02:05:11 nickel: ( 38.811 @ 0x39e4e78 / packetdump.debug) "x-kobo-deviceosversion" : "NA"
Sep 12 02:05:11 nickel: ( 38.811 @ 0x39e4e78 / packetdump.debug) "x-kobo-platformid" : "00000000-0000-0000-0000-000000000xxx" 
Sep 12 02:05:11 nickel: ( 38.811 @ 0x39e4e78 / packetdump.debug) "User-Agent" : "Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/538.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/538.1 (Kobo Touch 0386/4.38.23171)"
Sep 12 02:05:11 nickel: ( 38.811 @ 0x39e4e78 / packetdump.debug) "Accept-Language" : "en-US, *;q=0.9"
Sep 12 02:05:11 nickel: ( 38.812 @ 0x39e4e78 / packetdump.debug) "Host" : "komga.example.com"
Sep 12 02:05:11 nickel: ( 38.812 @ 0x39e4e78 / packetdump.debug) "Content-Length" : "203"
Sep 12 02:05:11 nickel: ( 38.812 @ 0x39e4e78 / packetdump.debug) ---------------------- BODY ---------------------------
Sep 12 02:05:11 nickel: ( 38.812 @ 0x39e4e78 / packetdump.debug) "{"AffiliateName": "RakutenBooks","ApplicationVersion": "4.38.23171","PlatformId": "00000000-0000-0000-0000-000000000xxx","SerialNumber": "xxx","TestKey": "xxx"}"
Sep 12 02:05:11 nickel: ( 38.812 @ 0x39e4e78 / packetdump.debug) -------------------------- END OF REQUEST ---------------------------
Sep 12 02:05:12 nickel: ( 39.099 @ 0x39e4e78 / packetdump.debug) ================== RESPONSE =============================
Sep 12 02:05:12 nickel: ( 39.100 @ 0x39e4e78 / packetdump.debug) URL: "https://komga.example.com/kobo/xxx/v1/analytics/gettests"
Sep 12 02:05:12 nickel: ( 39.101 @ 0x39e4e78 / packetdump.debug) HTTP Status Code: 200
Sep 12 02:05:12 nickel: ( 39.102 @ 0x39e4e78 / packetdump.debug) Is Cached?: false
Sep 12 02:05:12 nickel: ( 39.102 @ 0x39e4e78 / packetdump.debug) "Alt-Svc" : "h3=":443"; ma=2592000"
Sep 12 02:05:12 nickel: ( 39.103 @ 0x39e4e78 / packetdump.debug) "Content-Length" : "80"
Sep 12 02:05:12 nickel: ( 39.104 @ 0x39e4e78 / packetdump.debug) "Content-Type" : "application/json;charset=utf-8"
Sep 12 02:05:12 nickel: ( 39.105 @ 0x39e4e78 / packetdump.debug) "Date" : "Thu, 11 Sep 2025 17:05:12 GMT" Sep 12 02:05:12 nickel: ( 39.105 @ 0x39e4e78 / packetdump.debug) "Referrer-Policy" : "no-referrer-when-downgrade"
Sep 12 02:05:12 nickel: ( 39.106 @ 0x39e4e78 / packetdump.debug) "Server" : "Caddy"
Sep 12 02:05:12 nickel: ( 39.107 @ 0x39e4e78 / packetdump.debug) "Strict-Transport-Security" : "max-age=31536000;, max-age=31536000 ; includeSubDomains"
Sep 12 02:05:12 nickel: ( 39.109 @ 0x39e4e78 / packetdump.debug) "Vary" : "Origin, Access-Control-Request-Method, Access-Control-Request-Headers" 
Sep 12 02:05:12 nickel: ( 39.110 @ 0x39e4e78 / packetdump.debug) "X-Content-Type-Options" : "nosniff, nosniff" 
Sep 12 02:05:12 nickel: ( 39.110 @ 0x39e4e78 / packetdump.debug) "X-Frame-Options" : "DENY, DENY"
Sep 12 02:05:12 nickel: ( 39.110 @ 0x39e4e78 / packetdump.debug) "X-Kobo-Apitoken" : "e30=" 
Sep 12 02:05:12 nickel: ( 39.110 @ 0x39e4e78 / packetdump.debug) "X-Xss-Protection" : "0" 
Sep 12 02:05:12 nickel: ( 39.110 @ 0x39e4e78 / packetdump.debug) =========================================================
Sep 12 02:05:12 nickel: ( 39.111 @ 0x39e4e78 / packetdump.debug) "{ "Result": "Success", "TestKey": "xxx", "Tests": { } } "

Actual behavior

On komga-1.23.4 I get a Bad Request

Sep 12 02:27:56 nickel: (  1403.527 @ 0x3b816e8 / sync.debug) pumping with 17 pending commands and 0 active commands
Sep 12 02:27:56 nickel: (  1403.527 @ 0x3b816e8 / sync.debug) executing GetTestsCommand(0x4072438)
Sep 12 02:27:56 nickel: (  1403.527 @ 0x3b816e8 / sync.debug) virtual void OAuthAuthenticatedCommand::execute()
Sep 12 02:27:56 nickel: (  1403.528 @ 0x3b816e8 / sync.debug) virtual void GetTestsCommand::authenticatedExecute()
Sep 12 02:27:56 nickel: (  1403.530 @ 0x3b816e8 / packetdump.debug) Making Onestore request: "https://komga.example.com/kobo/xxx/v1/analytics/gettests"
Sep 12 02:27:56 nickel: (  1403.530 @ 0x3b816e8 / packetdump.debug) "{"AffiliateName": "RakutenBooks","ApplicationVersion": "4.38.23171","PlatformId": "00000000-0000-0000-0000-000000000xxx","SerialNumber": "N50628C029847","TestKey": "xxx"}"
Sep 12 02:27:56 nickel: (  1403.531 @ 0x3b816e8 / packetdump.debug) -------------------------- REQUEST ---------------------------
Sep 12 02:27:56 nickel: (  1403.532 @ 0x3b816e8 / packetdump.debug) "POST" > To:  "https://komga.example.com/kobo/xxx/v1/analytics/gettests"
Sep 12 02:27:56 nickel: (  1403.532 @ 0x3b816e8 / packetdump.debug) 	---------------------- HEADERS ---------------------------
Sep 12 02:27:56 nickel: (  1403.532 @ 0x3b816e8 / packetdump.debug) "Accept-Encoding" : "gzip"
Sep 12 02:27:56 nickel: (  1403.533 @ 0x3b816e8 / packetdump.debug) "Accept" : "application/json"
Sep 12 02:27:56 nickel: (  1403.533 @ 0x3b816e8 / packetdump.debug) "Authorization" : "Bearer xxx"
Sep 12 02:27:56 nickel: (  1403.533 @ 0x3b816e8 / packetdump.debug) "Content-Type" : "application/json"
Sep 12 02:27:56 nickel: (  1403.533 @ 0x3b816e8 / packetdump.debug) "x-kobo-affiliatename" : "RakutenBooks"
Sep 12 02:27:56 nickel: (  1403.534 @ 0x3b816e8 / packetdump.debug) "x-kobo-appversion" : "4.38.23171"
Sep 12 02:27:56 nickel: (  1403.534 @ 0x3b816e8 / packetdump.debug) "x-kobo-deviceid" : "xxx"
Sep 12 02:27:56 nickel: (  1403.534 @ 0x3b816e8 / packetdump.debug) "x-kobo-devicemodel" : "Kobo Clara 2E"
Sep 12 02:27:56 nickel: (  1403.534 @ 0x3b816e8 / packetdump.debug) "x-kobo-deviceos" : "4.1.15"
Sep 12 02:27:56 nickel: (  1403.534 @ 0x3b816e8 / packetdump.debug) "x-kobo-deviceosversion" : "NA"
Sep 12 02:27:56 nickel: (  1403.535 @ 0x3b816e8 / packetdump.debug) "x-kobo-platformid" : "00000000-0000-0000-0000-000000000xxx"
Sep 12 02:27:56 nickel: (  1403.535 @ 0x3b816e8 / packetdump.debug) "User-Agent" : "Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/538.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/538.1 (Kobo Touch 0386/4.38.23171)"
Sep 12 02:27:56 nickel: (  1403.535 @ 0x3b816e8 / packetdump.debug) "Accept-Language" : "en-US, *;q=0.9"
Sep 12 02:27:56 nickel: (  1403.535 @ 0x3b816e8 / packetdump.debug) "Host" : "komga.example.com"
Sep 12 02:27:56 nickel: (  1403.536 @ 0x3b816e8 / packetdump.debug) "Content-Length" : "203"
Sep 12 02:27:56 nickel: (  1403.536 @ 0x3b816e8 / packetdump.debug) 	---------------------- BODY ---------------------------
Sep 12 02:27:56 nickel: (  1403.536 @ 0x3b816e8 / packetdump.debug) "{"AffiliateName": "RakutenBooks","ApplicationVersion": "4.38.23171","PlatformId": "00000000-0000-0000-0000-000000000xxx","SerialNumber": "xxx","TestKey": "xxx"}"
Sep 12 02:27:56 nickel: (  1403.536 @ 0x3b816e8 / packetdump.debug) -------------------------- END OF REQUEST ---------------------------
Sep 12 02:27:56 nickel: (  1403.840 @ 0x3b816e8 / packetdump.warning) "https://komga.example.com/kobo/xxx/v1/analytics/gettests" => "Error downloading https://komga.example.com/kobo/xxx/v1/analytics/gettests - server replied: Bad Request"
Sep 12 02:27:56 nickel: (  1403.841 @ 0x3b816e8 / packetdump.warning) HTTP Status Code: 400
Sep 12 02:27:56 nickel: (  1403.841 @ 0x3b816e8 / packetdump.warning) Error: 299
Sep 12 02:27:56 nickel: (  1403.841 @ 0x3b816e8 / packetdump.warning) Source: "https://komga.example.com/kobo/xxx/v1/analytics/gettests"
Sep 12 02:27:56 nickel: (  1403.841 @ 0x3b816e8 / packetdump.warning) "{"timestamp":"2025-09-11T17:27:56.864+00:00","status":400,"error":"Bad Request","message":"Bad Request","path":"/kobo/xxx/v1/analytics/gettests"}"
Sep 12 02:27:56 nickel: (  1403.842 @ 0x37f89c0 / ui.warning) virtual bool QDebugSyncErrorFilter::applyFilter(SyncError&) "WebRequestErr"
Sep 12 02:27:56 nickel: (  1403.843 @ 0x3b816e8 / sync.debug) virtual void QueuedSyncCommand::cancel() SyncClient(0x409c778) GetTestsCommand(0x4072438)
Sep 12 02:27:56 nickel: (  1403.844 @ 0x3b816e8 / sync.debug) =================== SYNC QUEUE [ SyncClient(0x409c778) ] ====================
Sep 12 02:27:56 nickel: (  1403.844 @ 0x3b816e8 / sync.debug) ===================================================
Sep 12 02:27:56 nickel: (  1403.844 @ 0x3b816e8 / sync.debug)
Sep 12 02:27:56 nickel: (  1403.845 @ 0x3b816e8 / sync.debug) pumping with 0 pending commands and 0 active commands
Sep 12 02:27:56 nickel: (  1403.845 @ 0x3b816e8 / sync.debug) finished sync client
Sep 12 02:27:56 nickel: (  1403.845 @ 0x3b816e8 / sync.debug) GetTestsCommand(0x4072438) finished
Sep 12 02:27:56 nickel: (  1403.845 @ 0x3b816e8 / sync.debug) GetTestsCommand(0x4072438) finished
Sep 12 02:32:56 nickel: (  1703.461 @ 0x37f89c0 / performance.warning) static void QObjectUtil::repolishChildren(QWidget*, Qt::FindChildOptions, int) "SyncMenuView" repolish took 21

Logs

Proxy request is the following

Sep 12 02:27:56 helios64 env[1599553]: 2025-09-12T02:27:56.627+09:00 DEBUG 1599553 --- [io-32500-exec-3] o.g.komga.infrastructure.kobo.KoboProxy  : Proxy URL: https://storeapi.kobo.com/v1/analytics/gettests
Sep 12 02:27:56 helios64 env[1599553]: 2025-09-12T02:27:56.628+09:00 DEBUG 1599553 --- [io-32500-exec-3] o.g.komga.infrastructure.kobo.KoboProxy  : Headers out: [user-agent:"Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/538.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/538.1 (Kobo Touch 0386/4.38.23171)", accept:"application/json", accept-language:"en-US, *;q=0.9", authorization:"Bearer xxx", x-kobo-affiliatename:"RakutenBooks", x-kobo-appversion:"4.38.23171", x-kobo-deviceid:"xxx", x-kobo-devicemodel:"Kobo Clara 2E", x-kobo-deviceos:"4.1.15", x-kobo-deviceosversion:"NA", x-kobo-platformid:"00000000-0000-0000-0000-000000000xxx"]

Sep 12 02:27:56 helios64 env[1599553]: 2025-09-12T02:27:56.849+09:00 DEBUG 1599553 --- [io-32500-exec-3] o.s.w.f.CommonsRequestLoggingFilter      : REQUEST DATA: POST /kobo/xxx/v1/analytics/gettests, headers=[host:"komga.example.com", user-agent:"Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/538.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/538.1 (Kobo Touch 0386/4.38.23171)", content-length:"203", accept:"application/json", accept-encoding:"gzip", accept-language:"en-US, *;q=0.9", authorization:"Bearer xxx", x-kobo-affiliatename:"RakutenBooks", x-kobo-appversion:"4.38.23171", x-kobo-deviceid:"xxx", x-kobo-devicemodel:"Kobo Clara 2E", x-kobo-deviceos:"4.1.15", x-kobo-deviceosversion:"NA", x-kobo-platformid:"00000000-0000-0000-0000-000000000xxx", Content-Type:"application/json;charset=UTF-8"], payload={"AffiliateName": "RakutenBooks","ApplicationVersion": "4.38.23171","PlatformId": "00000000-0000-0000-0000-000000000xxx","SerialNumber": "xxx","TestKey": "xxx"}]

Komga version

1.23.4

Operating system

Linux Debian

Installation method

jar

Other details

No response

Acknowledgements

  • I have searched the existing issues (open AND closed) and this is a new ticket, NOT a duplicate or related to another open issue.
  • I have written a short but informative title.
  • I have checked the FAQ.
  • I have updated the app to the latest version.
  • I will fill out all of the requested information in this form.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions