Что означает здесь Google, когда говорят «не копируйте и не вставляйте этот код»?

12

Вот выдержка из кода API Google recaptcha ( https://www.google.com/recaptcha/api.js ):

/* PLEASE DO NOT COPY AND PASTE THIS CODE. */
(function() {
    if (!window['___grecaptcha_cfg']) { 
        window['___grecaptcha_cfg'] = {}; 
    };
    if (!window['___grecaptcha_cfg']['render']) { 
        window['___grecaptcha_cfg']['render'] = 'onload'; 
    };
    window['__google_recaptcha_client'] = true;
    var po = document.createElement('script'); 
    po.type = 'text/javascript'; 
    po.async = true;
    po.src = 'https://www.gstatic.com/recaptcha/api2/r20160314182818/recaptcha__it.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(po, s);
})();

Почему Google рекомендует не копировать и не вставлять этот код? Это потому, что они потеряют информацию об отслеживании?

Я думаю, что код вставляет скрипт на страницу. Чтобы избежать другого соединения, было бы полезно скопировать и вставить код напрямую. Это нормально?

CastenettoA
источник
12
Если бы я догадался, я бы сказал, что они говорят: «Вместо того, чтобы вставлять этот код на свою страницу, используйте его вместо URL-адреса API, чтобы, если мы его изменим, ваша страница автоматически приняла изменения».
Роберт Харви
2
Есть некоторая ирония в том, что вы копируете и вставляете код здесь
Брэд Томас,

Ответы:

25

Обратите внимание на po.srcстроку: r20160314182818выглядит как отметка времени, поэтому в этом случае она, вероятно, дает вам версию, которая была развернута 14.03.2016 в 18:28:18.

Я подозреваю, что itбит означает, что вы получаете версию на итальянском языке, что означает, что вы получаете версию на api.jsоснове вашего физического местоположения. В вашем профиле упоминается, что вы итальянский, поэтому я принял это как подтверждение.

Обратите внимание, что когда я перехожу по ссылке выше из Калифорнии, эта строка выглядит следующим образом:

 po.src = 'https://www.gstatic.com/recaptcha/api2/r20160314182818/recaptcha__en.js'

В целом это означает, что Google очень часто развертывает изменения в этом API (учитывая, что развернутой версии всего девять дней) и в зависимости от местоположения пользователя. Вероятно, это сделано потому, что капчи являются прямой целью для обратного инжиниринга людьми, которые хотят автоматизировать любой процесс, который защищает капча, и потому что капчи могут иметь культурно значимые особенности.

Если вы скопируете и вставите этот код, это означает:

  1. Вы будете использовать замороженную кодовую базу и, следовательно, не получите никаких преимуществ от любых изменений, которые может внести Google.
  2. Вы заставляете пользователей по всему миру использовать версию, предназначенную для определенной локали. Возможно, у ваших японских пользователей будут проблемы с капчами, предназначенными для итальянцев.
  3. Если Google решит удалить эту конкретную ревизию, ваш код полностью сломается.

При использовании любого API очень важно всегда придерживаться общедоступного API и никогда не использовать ничего личного по таким причинам, как этот.

Горт Робот
источник