Is AiPrice Search by Image for Amazon safe?

Medium risk

AiPrice(AliPrice) Search by Image for Amazon tracks matched browsing URLs and sends them to api.aliprice.com.

The extension syncs matching rules from Aliprice, watches completed tab URLs, and stores matching URLs in local browsing history before periodically reporting them for statistics. It also uses recent matched URLs to request recommendation notifications from Aliprice. On Amazon pages, its content scripts send the page URL, title, and referrer to Google Analytics page_view beacons.

aiprice2v4.0.3Chrome Web Store
46Risk
Who publishes it

aiprice2 - 14 other listings from the same operator, 1 of them carrying a finding

What this publisher told the store about itself, and the other listings that told it the same thing.

AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.

Publishers can request a review.

Findings

Every Amazon page you visit is beaconed to Google Analytics

Content scripts on Amazon pages send the page's full URL, title, and referrer to Google Analytics every few seconds, tagged with a persistent per-install ID.

No consent prompt appears first.

Severity
Medium unwanted
Type
Unexpected
CWE
CWE-359
Source
Dynamic sandbox
What actually happens
You did this

You navigate to a supported Amazon page with the extension's default settings.

Covers amazon.com and 15 other country domains such as amazon.co.uk, amazon.de, and amazon.co.jp.

The extension did this

The content script sends the page's URL, title, and referrer to Google Analytics within seconds.

The send repeats every 3 seconds while the tab stays open, and again right before you navigate away.

What's in each beacon to Google Analytics
  • The page you're on
    https://www.amazon.ca/s?k=laptop

    The complete address of the Amazon page you're viewing, including any search terms in the URL.

  • Page title
    laptop - Amazon.ca

    The browser tab title for the page, often including a product or search term.

  • Where you came from
    https://www.google.com/

    The page that linked you to this one, if any.

  • Your extension install ID
    knhepik-10234033d-0r6n0u21566k

    A persistent ID generated once per install that ties every beacon back to the same person over time.

  • Screen size and language
    800x600, en-US

    Your browser's screen resolution and UI language, used to profile your device.

Captured request
POSThttps://www.google-analytics.com/g/collect?v=2&tid=G-M0ZQ7STDXF&cid=knhepik-10234033d-0r6n0u21566k&sid=%5Bobject%20Object%5D&sr=800x600&dl=https%3A%2F%2Fwww.amazon.ca%2F&dr=&dt=&ul=en-US&sct=1&seg=1&_et=100&_p=402935520&_s=1
Where this data ends up
    • google-analytics.com

    Receives the page URL, title, referrer, install ID, screen size, and language, logged under this extension's own GA property G-M0ZQ7STDXF.

The code that does this

The beacon builder in the shared analytics module

Readable version
      const x = async (e = "", i = "", a = {}) => {        let _ = [],          n = "",          o = "",          r = "",          s = "",          u = [],          d = "",          p = {};        if (!(0, t.Ime)(e)) {          try {            if (n = await b(), o = await v(), r = await y(), d = await h(), p = (0, t.u4j)(), _ = (0, t.KgX)(e) ? [                [e, i, a]              ] : [...e], _ = _.filter((e => !!(e[0] || "").trim() && !!(e[1] || "").trim())), _.forEach((e => {                let i = (e[1] || "").trim(),                  a = e[2] || {};                a.country_code = r, a.ext_uid = n, a.ext_version = p.version, u = [                  ["en", i],                  ["_ee", "1"],                  ["_et", ""]                ], "page_view" !== i && Object.entries(a).map((([e, i]) => {                  "number" !== typeof i || isNaN(i) || u.push([`epn.${e}`, i]), u.push([`ep.${e}`, String(i)])                })), s += `${(0,t.OKO)("/",u).replace(/^\/\?/,"")}`, s += "\n"              })), s = s.trim(), s.length > 0) {              const e = globalThis.screen?.width && globalThis.screen?.height ? `${globalThis.screen.width}x${globalThis.screen.height}` : "",                i = (0, t.OKO)(c, {                  v: "2",                  tid: l,                  cid: n,                  sid: o,                  sr: e,                  dl: globalThis.document?.location?.href || "",                  dr: globalThis.document?.referrer || "",                  dt: globalThis.document?.title || "",                  ul: d,                  sct: 1,                  seg: 1,                  _et: 100,                  _p: (0, t.vxQ)(9, "0123456789"),                  _s: ++w                });              if (navigator?.sendBeacon && navigator.sendBeacon(i, s)) return !0;              if (globalThis.fetch) {                const e = await fetch(i, {                  method: "POST",                  body: s,                  keepalive: !0                });                return e.ok              }            }          } catch (e) {}          return !1        }

What it can do

Permissions this extension asks for, as declared in version 3.0.7. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to. The current listed version is 4.0.3, which we have not unpacked yet.

  • Read and change your data on aliexpress.com

    *://*.aliexpress.com/*

  • Read and change your data on aliprice.com

    *://*.aliprice.com/*

  • Read and change your data on amazon.ae

    *://*.amazon.ae/*

  • Read and change your data on amazon.ca

    *://*.amazon.ca/*

  • Read and change your data on amazon.cn

    *://*.amazon.cn/*

  • Read and change your data on amazon.co.jp

    *://*.amazon.co.jp/*

  • Read and change your data on amazon.co.uk

    *://*.amazon.co.uk/*

  • Read and change your data on amazon.com.au

    *://*.amazon.com.au/*

  • Read and change your data on amazon.com.br

    *://*.amazon.com.br/*

  • Read and change your data on amazon.com.mx

    *://*.amazon.com.mx/*

  • Read and change your data on amazon.com.tr

    *://*.amazon.com.tr/*

  • Read and change your data on amazon.com

    *://*.amazon.com/*

  • Read and change your data on amazon.de

    *://*.amazon.de/*

  • Read and change your data on amazon.es

    *://*.amazon.es/*

  • Read and change your data on amazon.fr

    *://*.amazon.fr/*

  • Read and change your data on amazon.in

    *://*.amazon.in/*

  • Read and change your data on amazon.it

    *://*.amazon.it/*

  • Read and change your data on amazon.nl

    *://*.amazon.nl/*

  • Read and change your data on ebay.com

    *://*.ebay.com/*

  • Read and change your data on walmart.com

    *://*.walmart.com/*

  • Read and change your data on wish.com

    *://*.wish.com/*

  • Read and change your data on ssl.google-analytics.com

    *://ssl.google-analytics.com/*

  • Act on the current tab, but only after you click the extension

    activeTab

  • Schedule its own background tasks

    alarms

  • Add items to the right-click menu

    contextMenus

  • Read and change cookies, including the ones that keep you signed in

    cookies

  • Show you desktop notifications

    notifications

  • Store data in your browser

    storage

Where it sends data

Destinations our analysis observed AiPrice Search by Image for Amazon contacting. Sending data somewhere is not a finding on its own - an extension that syncs your settings has to talk to its own server - but it is where your data can go, and who else it goes to.

  • www.google-analytics.comwidely used

    AiPrice Search by Image for Amazon sends data to www.google-analytics.com. A widely used service: 346 other extensions we have analysed send data here.

  • api.aliprice.com

    AiPrice Search by Image for Amazon sends data to api.aliprice.com. 6 other extensions we have analysed send data here.

Updated 30 September 2026nhfmioilpglanakdpomfobcmbkbjedha