Ir para o conteúdo
TCF v2

Descodificador de TC string

Cole a cadeia de consentimento do cookie euconsent-v2 e veja o CMP, as finalidades e os ids de vendor que traz.

A cadeia fica neste separador. O que cola não é enviado ao servidor.

O que é uma TC string, na prática

A TC string é o comprovativo que o CMP deixa quando alguém aceita, recusa ou guarda uma escolha no aviso europeu. Quase sempre está no cookie euconsent-v2. Abra os cookies de um site com esse aviso e procure um valor longo que começa por C. É essa a cadeia.

O formato é um campo de bits escrito com o alfabeto base64url: de A a Z, de a a z, dígitos, e os sinais - e _. Os primeiros seis bits são a versão. O TCF 2 guarda aí um 2, e seis bits são exactamente um carácter, por isso a primeira letra sai C. É por isso que uma cadeia actual começa quase sempre assim. A seguir vêm duas datas, contadas em décimos de segundo desde 1 de Janeiro de 1970: quando foi criada e quando o CMP a reescreveu pela última vez. Depois o id do CMP, o número de build desse CMP, o ecrã em que a escolha foi guardada e a língua do aviso. Cada letra dessa língua é um número de 0 (A) a 25 (Z).

A seguir vem a versão da Global Vendor List com que o aviso foi montado, e a versão da política TCF dessa mesma lista. IsServiceSpecific tem de valer 1. Um 0 quer dizer que, pela política, um vendor deve tratar a cadeia como inválida, mesmo que o resto dos bits se leia. UseNonStandardTexts vale 1 quando o CMP alterou os textos padrão das finalidades ou as ilustrações. PurposeOneTreatment vale 1 quando a finalidade 1 não foi mostrada da forma habitual. PublisherCC é o país cuja lei o publisher toma como referência: duas letras, a mesma codificação da língua.

As finalidades ocupam vinte e quatro bits de consentimento e vinte e quatro de interesse legítimo. A finalidade 1 é o primeiro bit de cada linha: armazenar ou aceder a informação num dispositivo. Só têm nome as finalidades 1 a 11. Desde o TCF 2.2, as finalidades 3, 4, 5 e 6 (perfis de publicidade e de conteúdo) não podem assentar em interesse legítimo, e esses quatro bits têm de estar a 0. As special features vão noutra linha de 12 bits. As duas que existem hoje são a geolocalização precisa e a análise das características do dispositivo para o identificar. Um 1 significa que o utilizador a activou.

Depois vêm o consentimento por vendor e o interesse legítimo por vendor. Cada lista começa pelo id de vendor mais alto que cobre, e um indicador: um bit por id, ou uma série de intervalos. Os intervalos ocupam menos quando a selecção é dispersa, que é o caso normal numa lista longa. Um vendor que não aparece numa lista por intervalos não tem sinal. O id é o número da Global Vendor List, não o nome da empresa. A IAB Europe republica essa lista com frequência, e esta página deixa o número. Os nomes estão em https://vendor-list.consensu.org/v3/vendor-list.json para a lista vigente, e em https://vendor-list.consensu.org/v3/archives/vendor-list-v{version}.json para a versão gravada na cadeia. Cruzar o ficheiro de hoje com uma cadeia antiga põe o nome errado em vendors já removidos.

As restrições do publisher fecham o segmento principal. Cada uma nomeia uma finalidade, um tipo de restrição e os ids de vendor a que se aplica. O tipo 0 quer dizer que o publisher não permite essa finalidade para esses vendors. O tipo 1 exige consentimento, também quando o vendor registou a finalidade como interesse legítimo e a marcou como flexível. O tipo 2 exige interesse legítimo. O contador de restrições está sempre presente, inclusive quando é zero.

Os pontos partem a cadeia em segmentos. O primeiro é o núcleo e não leva tipo: começa pela versão. Cada segmento seguinte abre com um tipo de 3 bits. O tipo 1 é Disclosed Vendors, os ids que o CMP mostrou mesmo. Desde o TCF 2.3 esse segmento é obrigatório, porque um vendor que só declara special purposes não tinha outro sítio onde o CMP o pudesse marcar como divulgado. O tipo 3 é o Publisher TC: as finalidades que o site pede para si, mais as finalidades próprias que o publisher tenha definido. O tipo 2 é o segmento antigo de Allowed Vendors, o do desenho out-of-band. Os CMP actuais não o escrevem. Se uma cadeia antiga ainda o traz, é lida e etiquetada à parte.

O til fica fora do TCF. Tudo o que vem a seguir a ~ é o Additional Consent da Google: um número de versão e depois ids ATP separados por pontos. Os CMP colam-no ao mesmo cookie para a tag de anúncio poder ler fornecedores que não estão na Global Vendor List. Esta página separa esse fim e lista os ids. Não chama a Google e não resolve esses ids.

Onde a copiar

  1. No Chrome: DevTools, Application, Cookies, e o site. Copie o valor de euconsent-v2. Se o CMP guardou o Additional Consent no mesmo cookie, não corte o que vai depois do til.
  2. Numa página com o CMP carregado, na consola: __tcfapi("getTCData", 2, function (data) { console.log(data.tcString); }). tcString é o núcleo mais os segmentos separados por pontos. Se o CMP também preenche addtlConsent, esse valor é o que vai depois do til.
  3. Os pedidos de bid repetem muitas vezes o mesmo valor em gdpr_consent ou euconsent. Um URL longo é cortado. Uma cadeia cortada falha aqui com um aviso de que acaba antes do tempo. A cópia fiável é a do cookie.

Como ler o resultado

As datas saem na sua língua e outra vez em UTC. Criada é a primeira vez que esta escolha foi guardada. Última actualização mexe-se quando o CMP reescreve a cadeia, também num refresh da lista de vendors.

A linha do CMP nomeia algumas empresas da lista actual de CMP da IAB Europe: Usercentrics (5), Sourcepoint (6), Didomi (7), OneTrust (28), consentmanager (31), Sirdata (92), Cookiebot (134) e Google (300). Qualquer outro id fica em número. Entram empresas e mudam de nome, e um nome adivinhado é pior do que o id.

A tabela são as finalidades 1 a 11. Sim significa que esse bit está activo. O interesse legítimo das finalidades 3 a 6 tem de estar desligado numa cadeia feita com TCF 2.2 ou posterior. Se o vir ligado, o CMP que escreveu a cadeia não seguiu essa regra.

Cada bloco de vendors mostra a contagem, o id máximo, se foi bit a bit ou por intervalos, e depois os ids. A partir de 200 ids o resto é contado e não é impresso, para um aceitar-tudo não prender o separador. Se faltar o segmento Disclosed Vendors, há uma linha que o diz. Numa cadeia TCF 2.3 esse segmento tem de estar.

Perguntas que aparecem com esta cadeia

Onde está guardada a TC string?

No cookie euconsent-v2, em quase todos os CMP que implementam TCF 2. Algumas stacks também a metem no URL da bid. Copie-a do cookie quando puder. Um valor tirado de um URL longo chega muitas vezes cortado, e uma cadeia cortada não se descodifica.

Porque é que começa por C?

A versão é o número 2, guardado em seis bits. Seis bits são um carácter base64url, e o carácter do valor 2 é C. Uma cadeia TCF 1 começa por outra letra porque o número de versão é outro. Esta página só abre a versão 2.

O que muda entre a coluna de consentimento e a de interesse legítimo?

O consentimento é um bit que o utilizador ligou. O interesse legítimo é um bit que o CMP põe quando mostrou essa finalidade sob interesse legítimo e o utilizador não se opôs. O vendor tem ainda de ler a ficha na Global Vendor List. Uma finalidade registada como consentimento não fica coberta pelo bit de interesse legítimo.

O que é a finalidade 1?

Armazenar e/ou aceder a informação num dispositivo. É a finalidade dos cookies e de armazenamento parecido, e a política TCF pede consentimento. PurposeOneTreatment, mais acima na mesma cadeia, diz ao vendor se o CMP mostrou a finalidade 1 da forma normal. Junto com o país do publisher, é assim que um vendor decide se nesse país ainda precisa de um sim para a finalidade 1.

Porque é que há pontos a meio?

Cada ponto abre outro segmento. O núcleo vai primeiro. A seguir costuma vir Disclosed Vendors e, em alguns sites, o Publisher TC. A ordem desses segmentos posteriores não importa, porque cada um começa pelo seu tipo.

O que é o texto a seguir ao til?

O Additional Consent da Google. O primeiro número é a versão AC e depois vai uma lista de ids de fornecedores ATP. Os CMP guardam-no ao lado da TC string para a tag da Google poder ler as duas coisas. Não é um segmento TCF e não vai em base64.

O que eu colo é enviado?

Não. O script desta página lê a caixa e escreve o resultado por baixo. Não há nenhum pedido que leve a cadeia. Fecha o separador e desaparece.

Serve para uma cadeia TCF v1?

Não. A versão 1 tem outro desenho. Se os primeiros seis bits não forem um 2, a página pára e mostra a versão que encontrou.

A lista de vendors são só números. Onde estão os nomes?

A cadeia guarda ids. Os nomes vivem na Global Vendor List da versão que aparece ao lado de Lista de vendors. O ficheiro vigente é https://vendor-list.consensu.org/v3/vendor-list.json e um antigo é https://vendor-list.consensu.org/v3/archives/vendor-list-v{version}.json, com a versão da cadeia no lugar de {version}. A lista de hoje contra uma cadeia antiga põe o nome de outro nos vendors já removidos.

O que é um id de CMP?

Um número que a IAB Europe atribui à empresa que recolhe o consentimento. Não é o publisher, e não é um id de vendor da Global Vendor List. A versão de CMP ao lado é o número de build dessa empresa. É o campo que quer quando uma falha só aparece numa release do aviso deles.