henry_flower: A melancholy wolf (Default)

(Початок та передгішторія тут.)

Barcode_Generator-2.1.0.ibgbhgchcjoldpbpmemggbcldfdmhhlb

Публічне ріпо так
Постійна бекграунд сторінка ні
all_urls дозвіл ні
Інжектування до кожної сторінки ні
Мініфікований код ні
Обфускаційний код ні
Стеження за користувачем так
Обробка помилок при генерації QR так
Контекстне меню ні
Країна Гамерика (Флóрида)
Оцінка -1

Всі ріквести прямують до famularo.org (без tls), напр

http://famularo.org/web/barcode?type=qrcode&content=%D0%A2%D0%B8%20%D0%BF%D1%96%D0%B4%D0%B0%D1%80&size=3

поверне png зображення.

1ше з розглянутих ікстеншенів, яке повідомляє що сталася помилка, якщо вхідні дані були завеликі. Неймовірно!

Не вміє автоматично генерувати qr з поточної url–користувач має копіпастити її самотужки.

Візуально є абсолютним колгоспом. Кетайські студенти більше розуміються на UX, ніж зе флоридський дядко.

Barcode_Generator_for_free_with_this_tool-1.0.0.628.fldfijhnhlgcimkhijnmeaekaedfiill

Публічне ріпо ні
Постійна бекграунд сторінка так
all_urls дозвіл ні
Інжектування до кожної сторінки ні
Мініфікований код ні
Обфускаційний код ні
Стеження за користувачем так
Обробка помилок при генерації QR ні
Контекстне меню ні
Країна Гамерика (Делавер)
Оцінка -4

Замість попапу або створення даялогу у поточному табі, відкриває новий таб з адресою app.pdf dot co, де пропонує генерувати qr та купляти місячну підписку. Не жарт.

Є настільки примітивним, що невзмозі навіть передати url з табу до хформи на уйоб сайті чи сказати щось виразне про завеликі вхідні дані.

Найкращій коментар з могозину: “JUNK”, який одначе має 427 користувачів.

Break_It__Brk_Im_-1.4.0.picnajghhinnejoejfjjnijebndmikne

Публічне ріпо ні
Постійна бекграунд сторінка ні
all_urls дозвіл ні
Інжектування до кожної сторінки ні
Мініфікований код ні
Обфускаційний код ні
Стеження за користувачем так
Обробка помилок при генерації QR ні
Контекстне меню ні
Країна Гамерика (Каліфорнія)
Оцінка -3

Створює попап зі списком всіх табів, який веде до уйоб сайту brk dot im, на якому: (а) скорочується url, (б) генерується qr, за допомогою сервісу гооглівських даяграм.

Метод яким створюється html табличка з лінками є провербіальний індуський код: замість того щоб спочатку скласти список з url зі всіх табів, знайти у списку поточний url, перенести його на початок списку, потім згенерувати табличку, ікстеншена:

  1. малює табличку зі всіма url;
  2. малює ще 1 табличку лише з 1 рядком–поточним url, де код генерування таблички є сумлінно скопійованим з п.1.

Тягне с собою jquery, яка ніде не використовується. Має мертвого коду, який мав би підраховувати скільки разів користувач поширив (через фасебоока або твітора) лінка про ікстеншена.

Про свій страшно корисний уйоб сайт, автор ікстеншену піднесено занотовує:

Crafted with love ♥ in San Francisco Bay Area, CA by Vasu Jain (VJ)
VJ is a Software Engineer, tech enthusiast and a self proclaimed GEEK .
RG is a Software developer, Women in tech and a great cook .

і підкладає хфоточку, на якій втомлена куховарка запитує “чому мені дістався цей придурок?”

henry_flower: A melancholy wolf (Default)

(Початок та передгішторія тут.)

2QRcode-1.0.1.plpmkgbnfajfbjklnndebkbbplfjjcei

Публічне ріпо так
Постійна бекграунд сторінка ні
all_urls дозвіл ні
Інжектування до кожної сторінки ні
Мініфікований код ні
Обфускаційний код ні
Стеження за користувачем ні
Обробка помилок при генерації QR ні
Контекстне меню ні
Країна Кетай (Чунцін)
Оцінка 2

Ніяких параметрів для генерації qr, ніяких перевірок, чи генерувався qr чи ні–дуже схоже на щось, що було зліплене між парами ув Чунціньському Технологічному Університеті.

Такий тип ікстеншену, до якого іконки малюються довше, ніж пишеться код.

Acortador_URL-1.0.heapgkainnjfgganbefabkjdhkeieifm

Публічне ріпо ні
Постійна бекграунд сторінка так
all_urls дозвіл ні
Інжектування до кожної сторінки ні
Мініфікований код так
Обфускаційний код ні
Стеження за користувачем так
Обробка помилок при генерації QR ні
Контекстне меню ні
Країна ЄС (Гішпанія)
Оцінка -5

Геть усе по гішпанські. Гоогл аналітика ув попапі.

Контекстне меню діє лише для всієї сторінки, тобто виділити текст, або клікати на правою кнопкою миші на лінках є марно.

Мав би генерувати qr png фіксованого розміру за допомогою chart.apis.google.com, напр

$ curl 'http://chart.apis.google.com/chart?cht=qr&chs=120&chld=L|0&chl=%D0%A2%D0%B8%20%D0%BF%D1%96%D0%B4%D0%B0%D1%80' \
  > public-announcement.png

але воно генерує лише qr з 1 словом: undefined, тому що спочатку намагається скоротити url через гоогловський URL Shortener, який гоогл засансетів трохи меньше місяця тому, і замість скороченої url передає undefined.

Незважаючи на такі сумні хфакти, ікстеншена продовжує мати 1,813 користувачів.

any2qr-1.0.0.bfamldmhmmkolmlembmkhhnghkbfiiom

Публічне ріпо ні
Постійна бекграунд сторінка так
all_urls дозвіл ні
Інжектування до кожної сторінки ні
Мініфікований код ні
Обфускаційний код ні
Стеження за користувачем так
Обробка помилок при генерації QR ні
Контекстне меню так
Країна Кетай (Лоян)
Оцінка -3

Судячи з CLRF, написано у віндюку.

Всі ріквести прямують до easybots dot cn (у GET вигляді та без tls). На сайті easybots розповідають про вишукане минуле (гоогл-транслейта з кетайської):

‘The company is located in Luoyang City, a historical and cultural city and the ancient capital of the 13th Dynasty.’

Та практичне сьогодення:

‘It is located in the National High-tech Development Zone.’

Т.я. опускатися до таких дрібничок як то перевірка чи згенерувався qr, для нащадків хороброго імператора Ян Цзянь є нижче власної гідності, тому ікстеншена просто змінює атрібута src ув <img>, на

http://www.easybots.cn/qr/php/qr_img.php?e=M&s=4&d=%D0%A2%D0%B8%20%D0%BF%D1%96%D0%B4%D0%B0%D1%80

але коли search param d зростає до деількох кб, сервер вертає 414 Request-URI Too Large, а кроум малює зіпсовану іконку.

На жаль, технологію POST запитів, у культурній столиці династії Суй, наразі ще не винайдено.

henry_flower: A melancholy wolf (Default)

(Початок та передгішторія тут.)

Іноді здається, що ув могозині є лише кетайські програми, що, звісно, тішить, бо я все-таки сподіваюся дожити то Україно-Китайського кордону, ггг

诗词窗-0.2.3.npkenggpjeejgeocboajmokkgdjppcgi

Публічне ріпо ні
Постійна бекграунд сторінка ні
all_urls дозвіл ні
Інжектування до кожної сторінки ні
Мініфікований код ні
Обфускаційний код ні
Стеження за користувачем ні
Обробка помилок при генерації QR ні
Контекстне меню ні
Країна Кетай (Шеньчженя)
Оцінка 1

Майже не містить слів рідною англійською. Візуально є вельми симпатичним–у нас так не вміють. Інтерфейсні елементи настільки просто та шляхетно виглядають, що я відчув заздрість.

Має мертвого кода у вигляді нікуди не підключеної бекграундної сторінки. Сторінка мала б відсилати POST запити на кшталт:

$ curl -H 'Content-Type: application/json' -d '{"value": 9304}' \
    http://111.231.234.117:8688/shici/radom | json
{
  "fontUrl": "...",
  "poetry": {
    "value": 9304,
    "rhythmic": "诉衷情",
    "author": "王千秋",
    "content": "二分浓绿一分红。\n春事若为穷。\n醉袖香沾粉,公挽我、我扶公。
                短帽,吐长虹。\n拟凌风。\n布金堆里,叠翠屏中,云月轻笼。"
  },
  "keys": [
    {
      "word": "春事",
      "tag": "n"
    },
    {
      "word": "长虹",
      "tag": "nz"
    },
    {
      "word": "布金",
      "tag": "n"
    }
  ]
}

Що це і навіщо, окрім натяків на “poetry”, залишається невідомим.

Серед файлів має ось таку картинку, яка також ніде не рендериться:

На жаль, розширення генерує qr тільки фіксованого розміру та з найвищім рівнем виправленням помилок H (30%), тому зображення виходить занадто щільним. При спробі генерації qr з кількома кб вводу, показує пустий div.

Anything_to_QRcode-1.2.9.calkaljlpglgogjfcidhlmmlgjnpmnmf

Публічне ріпо ні
Постійна бекграунд сторінка так
all_urls дозвіл так
Інжектування до кожної сторінки так
Мініфікований код так
Обфускаційний код ні
Стеження за користувачем ні
Обробка помилок при генерації QR ні
Контекстне меню так
Країна Кетай (Гонконга)
Оцінка -4

Пацан розуміє як просувати свої програми: де тільки можна просить оцінити зе ікстеншна ув могозині гоогла, на сторінці опції ниє про пожертви. Результата–27К користувачів.

Код сторінки опції має прихований текст:

“If you like this extension, please keep this checkbox checked, then i may earn a little money in some way(e.g. play a video silently in background for a few seconds) which has no visible impact on any website. It will never bother you and never collect your personal private data. Thanks very much ♥”

Але ніякого механізму для показу “відео” чи іншої монетезаційної погані я ув коді не знайшов. Можливо то є артехфакт минулих версій або навпаки–плани на майбутнє.

QR генерація написана погано: якщо дейта завелика, зе ікстеншена тихо кидає іксепшену, а користувачу залишають лише сірого накладання без натяку що трапилося.

henry_flower: A melancholy wolf (Default)

Так як пан jurgen обіцяє промені поносу всім хто буде писати свої цінні думки про 73%, то я напишу про свою улюблену тему: екосистему бовзера кроум.

Захотів найпростішого: ікстеншену, який би малював qr коди. Могозин гоогла, натуралменте, має нічого, окрім жахіття.

Переглянувши їх декілька штук та трохи покепкувавши з кетайських, довелося написати своє, але процес пошуку був достатньо смішний, так що їм можна поділитися.

У цьому пості є опис мети, методів + огляд перших 3х інкстеншенів, рекомендованих гооглом. У наступних постах будуть відгуки про інші (чимось цікаві або феноменально ідіотські) розширення. Загалом, могозин на тему qr їх має > 400 штук, тому оглядів вистачить на кілька років.

Трішки трівіа для тих, хто живе під скелею

QR поділяються на 40 версій. Кожну версію можна закодувати у декількох режимах, декількох кодуваннях та з 4 рівнями виправленням помилок (EC). Напр

  • v1, режим numeric, ec L (7%) дає можливість закодувати 41 цифру.
  • v1, byte, ec H (30%) дозволяє лише 7 байтів.
  • v40, byte, ec L дозволяє більш комфортні 2953 байта, але qr код тоді повинен бути фізично розміром з телевізора, інакше телехфони, через жалюгідність своїх камер, будуть неспроможні його прочитати.

Для того щоб створювати суспільно корисні об’яви як то

здогадайтеся

qr потрібно кодувати ув utf8, що ще більше зменшує його місткість.

Що я хотів від ікстеншену?

  • ніяких <all_urls> та https://*/* дозволів, ніяких бекграундних сторінок, які висять постійно ув пам’яті, ніякого слідкування за тим, що я генерую;
  • регулювання параметрів генерації; звичайно, має бути режим, де qr версію воно вибирає автоматично найменшу;
  • svg;
  • адаптивне вікно для qr з великим вмістом данних.

Що я отримав? (Риторичне питання.)

Мéта

Кожен відгук містить рейтинг, який рахується з набіру хфакторів. Чому щось подібне є відсутнім ув могозині гоогла, на жаль, є невідомим.

Клітерій Бали
Публічне ріпо 1
Постійна бекграунд сторінка -1
<all_urls> дозвіл -2
Інжектування скрипта будь-куди -2
Мініфікований код -1
Обфускаційний код -2
Стеження за користувачем -4
Обробка помилок при генерації QR 1
Контекстне меню 1
Не Московія 1

Напр

Публічне ріпо ні
Постійна бекграунд сторінка так
all_urls дозвіл так
Інжектування до кожної сторінки так
Мініфікований код так
Обфускаційний код ні
Стеження за користувачем ні
Обробка помилок при генерації QR ні
Контекстне меню так
Країна Кетай (Гонконга)
Оцінка -4

Найкраще vs. найгірше:

Публічне ріпо так
Постійна бекграунд сторінка ні
all_urls дозвіл ні
Інжектування до кожної сторінки ні
Мініфікований код ні
Обфускаційний код ні
Стеження за користувачем ні
Обробка помилок при генерації QR так
Контекстне меню так
Країна Ізраїль
Оцінка 4
Публічне ріпо ні
Постійна бекграунд сторінка так
all_urls дозвіл так
Інжектування до кожної сторінки так
Мініфікований код так
Обфускаційний код так
Стеження за користувачем так
Обробка помилок при генерації QR ні
Контекстне меню ні
Країна Московія
Оцінка -12

Всі рожево-зелені таблички генеруються автомагічно з ямлу:

---
public_repo: false
persistent_bg_page: true
all_urls_permission: true
content_script_allover: true
minificated: true
obfusticated: false
user_tracking: false
qr_errors_handling: false
context_menu: true
country: Кетай (Гонконга)
---

Працює це так: я пишу ці пости ув маркдауні, який pandoc конвертує ув фрагмент html’у, який читає скрипта, що підраховує рейтинг та заміює вузли <pre class="factor">...</pre> на таблички з вбудованим css.

Бібліотеки

У більшості переглянутих ікстеншенів використовується 2 найдебільніші з найдебільніших бібліотек для генерації qr.

Колись, 1 японса написав бібліотечку qrcode-generator, яка випльовувала лише png, не підтримувала версії qr > 4 та мала чималу кількість помилок.

Потім 1 кореєць написав обгортку для зе бібліотеки, де він виправив 0 багів, але куди додав генерацію svg. Щоб показати свою зневагу до бідного японси, вихідний код оригінальної бібліотечки він притулив ув мініфікованому вигляді. Обгортка стала популярнішою за річ, яку вона обгортала.

Тим часом японса, який з журбою дивився на корейця, тихесенько додав до qrcode-generator’а підтримку всіх qr версій та генерацію svg, ascii, html tables та чорта ув ступі. Це мало хто помітив, тому що всі продовжували (а) користуватися обгорткою, (б) голосно бідкатися на її недоліки. Згодом корейцю все набридло і свій проект він покинув, чого не зробили численні його користувачі.

Паралельно з корейцем, 1 ірландець загорнув qrcode-generator’а ув обгортку для jquery. Щоб посилити корисне правило “якщо бачиш jquery у назві бібліотеки–не підходь на кілометр до”, він додав 0 нових хфункції до старої версії qrcode-generator’а та виправив 0 помилок. Обгортка стала популярнішою за річ, яку вона обгортала.

Всі події вище відбувалися 7-6 років тому. Сьогодні, у 2х врапперах використовується код qrcode-generator, який автора врапперів не оновлювали >7 років. За цей час японса довів свою бібліотеку до робастного стану, але людям, які шукають ‘qr code javascript’, це є невідомим. На гітхабі, по тегу qr, можна миттєво знайти кілька дуже непоганих альтернативних імплементації з тисячами зірок, але це не має жодного значення: чого немає на 1й сторінці гоогла, того не існує.

Збір

Що розширень буде так багато, я, звичайно, не підозрював. Якщо набрати ув інпуті могозину “qr”, воно випльовує такий список, що здається його можна скролити безкінечно. Коли воно, нарешті, зупинилося, я набрав ув devtools:

> $$('div[aria-label="Add to Chrome"]').length
482

та закрив обличчя руками. 482–це є кількість розширень. У мене таке відчуття, що їх пишуть студенти ув буткемпах, інакше таку кількість однотипного мотлоху пояснити складно.

Скопіювати геть усі лінки на .crx можна надрукувавши:

> copy($$('a[type=W]').map(v => v.href).join`\n`)

і завантажити:

$ xargs -n1 ../fetch-webstore-ext < urls

fetch-webstore-ext це є скрипта, який завантажує 1 .crx, виколупує з нього ім’я з версією та розпаковує ув директорію типу

name-ver.id
Этимъ полукресломъ
Мастеръ Гамбсъ
начинаетъ новую партiю мебели

Quick_QR_Code_Generator-7.93.afpbjjgbdimpioenaedcjgkaigggcdpp

Публічне ріпо ні
Постійна бекграунд сторінка так
all_urls дозвіл ні
Інжектування до кожної сторінки ні
Мініфікований код ні
Обфускаційний код ні
Стеження за користувачем так
Обробка помилок при генерації QR ні
Контекстне меню так
Країна Кетай (Пекіна)
Оцінка -3

Нумеро уно ув могозині на тему qr (133,290 users).

Має гоогл аналітику ув бекграундній сторінці. Додатково записує коли користувач клікає ув попапі на лінках, які ведуть до могозину.

У сторінці опції–iframe фасебооку (здогадайтеся навіщо).

Ув коді присутні цікаві коментарі на колбеках, які файряться коли користувач хоче перегенерувати qr:

// won't send any private data, only for debug
// trackContent('click:'+href);

trackContent() хфункція відсилала б свій параметр (url сторінки, яку користувач заінкодив) до бекграундної сторінки, звідки воно пливло б до гоогл аналітики. Закоментовано мабуть тому, що якийсь інший кетайса пообіцяв вибити автору зуби.

Яка гарантія на не відкоментування назад у наступній версії? Ніякої, звичайно. Користувач помітить нічого.

Окрім трекінгу:

  • паніка при спробі генерації qr з кількома кб вводу–починає жерти 1 ядро cpu на ~94%, жодного сповіщення чому qr є відсутнім;
  • qr тільки фіксованого розміру, який не залежить від розміру вьюпорту;
  • не підтримує svg;
  • jquery + bootstrap (коментувати не буду, DW мене зобанить за хейт спіч).

Зате є кнопка донейшену через paypal.

Питання від наївного гамериканця:

‘Hello! Your extension was highly recommended and requested… Various State and Federal laws require us to ensure the privacy and security of information when used by students or with student data. Can you provide the permissions this extension requires as well as any information it collects?’

ггг

The_QR_Code_Extension-0.3.oijdcdmnjjgnnhgljmhkjlablaejfeeb

Публічне ріпо ні
Постійна бекграунд сторінка ні
all_urls дозвіл ні
Інжектування до кожної сторінки ні
Мініфікований код так
Обфускаційний код ні
Стеження за користувачем так
Обробка помилок при генерації QR ні
Контекстне меню ні
Країна ЄС (Германія)
Оцінка -4

Всі ріквести прямують до the-qrcode-generator dot com.

2,774,842 users (Ув Києві у вихідний день людей менше.)

При спробі генерації qr з кількома кб вводу показує галімат’ю. Про те що сталася помилка, можна дізнатися тільки полізши інспектором до попапу.

Тягне з собою angularjs 1, тому що як то ще можна зробити віконце з 2 кнопками? Тільки за допомогою свіжого, як мамонт, фреймвоку.

Easy_QR_Code-1.8.2.emlhjldmodkejoblhpbldpbddilijblk

Публічне ріпо ні
Постійна бекграунд сторінка ні
all_urls дозвіл ні
Інжектування до кожної сторінки ні
Мініфікований код так
Обфускаційний код ні
Стеження за користувачем так
Обробка помилок при генерації QR ні
Контекстне меню ні
Країна Кетай (Шеньчженя)
Оцінка -4

Автор не забуває просити грошей, фітбеку та могозинних зірок. Як бачимо, це приносить плоди ув вигляди 3го місця.

На сторінці опцій має гоогл аналітику.

Дозволяє трохи твікати qr генерацію, але, як нескладно здогадатися, при спробі генерації qr з кількома кб вводу воно показує пустий div. У чому справа, користувачу не повідомляється.

Під капотом є звичний jquery мотлох з обгорткою допотопної версії qrcode-generator.

Я би такі розширення видаляв з могозину не тому що вони злі за своєю суттю, а суто по запобіганню вивиху у людей щелеп від нудьги.