tonhowtf/omniget · error

chunk de assinatura do X nao encontrado

Error message

chunk de assinatura do X nao encontrado

What it means

indices probes candidate URLs to locate X's signing chunk JS file, fetches it, and extracts signature index constants via the regex r"\(\w\[(\d{1,2})\],\s*16\)". If no candidate URL could be resolved, it throws "chunk de assinatura do X nao encontrado". Without this chunk the txid signature indices cannot be computed.

Solutions

  1. Check network access and whether the probe requests are being blocked (403/429 from X).
  2. Update the URL-probing logic to match X's current HTML/JS bundle layout.
  3. Capture the probed responses and confirm at least one returns parseable HTML containing the chunk link.
  4. Retry later — this often resolves when X finishes a frontend deploy or the rate limit clears.
Defensive patterns

Strategy: retry

Try / catch

match create(...).await {
    Ok(v) => v,
    Err(e) if e.to_string().contains("chunk de assinatura") => {
        eprintln!("chunk do X não resolvido; atualizando parser ou aguardando deploy");
        // retry later or fall back to cached indices
    }
    Err(e) => return Err(e),
}

Prevention

When it happens

Trigger: Calling create when all probed URLs fail (network errors, HTML without the chunk script link, or X renaming/moving the chunk asset) so `url` stays None.

Common situations: X deploying a new main.js bundle layout; request blocked or rate-limited so no candidate page loads; offline/proxy environments; X changing how the chunk URL is embedded in the HTML.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/f562321ab1215e38. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/x/txid.rs:320

        let sem = std::sync::Arc::new(tokio::sync::Semaphore::new(12));
        let mut tasks = Vec::new();
        for s in pool.into_iter().take(80) {
            let http = http.clone();
            let sem = sem.clone();
            tasks.push(tokio::spawn(async move {
                let _p = sem.acquire().await.ok()?;
                let text = http.get(&s).send().await.ok()?.text().await.ok()?;
                indices_re().find(&text).map(|m| join_url(&s, m.as_str()))
            }));
        }
        for t in tasks {
            if let Ok(Some(u)) = t.await {
                url = Some(u);
                break;
            }
        }
    }
    let url = url.ok_or_else(|| anyhow::anyhow!("chunk de assinatura do X nao encontrado"))?;
    let text = page_text(http, &url, cookie).await?;
    let re_idx = regex::Regex::new(r"\(\w\[(\d{1,2})\],\s*16\)").unwrap();
    let items: Vec<usize> = re_idx
        .captures_iter(&text)
        .filter_map(|c| c[1].parse().ok())
        .collect();
    if items.is_empty() {
        anyhow::bail!("indices de assinatura nao encontrados");
    }
    Ok(items)
}

impl TxIdGen {
    /// Precisa da sessao logada: o X so entrega a pagina com os indices para
    /// quem esta autenticado.
    pub async fn create(http: &reqwest::Client, cookie: Option<&str>) -> anyhow::Result<Self> {
        let html = page_text(http, "https://x.com/tesla", cookie).await?;
        let vk = verification_bytes(&html)?;

View on GitHub (pinned to 8600b91f42)