[AJUDA] Projeto FreeLance de Desenvolvedor Web Com Nodejs + Frontend Vanilla JS

Opa, boa noite a todos, tudo certo bem com vocês? Estou trabalhando em um projeto freelance e gostaria de pedir uma ajuda.

Contexto do problema:

Eu criei um servidor em nodejs para um site do meu cliente. O site dele é basicamente uma lading page que vende um produto. Quando a pessoa entra nessa lading page, ela faz uma requisição para o meu servidor e com base em algumas regras de negocio devolve para o frontend dados personalizados, como por exemplo um preço personalizados daquele produto, etc...

O problema:

A pessoa quando entra na lading page pode vim por diversas fontes (facebook, instagram, etc..). Quando a pessoa entra na lading page eu uso o document.referrer do javascript para identificar de onde aquela pessoa está vindo e envio essa informação para o meu servidor. O problema é que o document.referrer não funciona 100%, em varios casos a pessoa clica no anuncio dele no Facebook Ads e o meu document.referrer vem com uma string vazia e não com a referência do facebook... O mesmo acontece com os anuncios dele no Instagram... Minha pergunta é: Existe alguma forma mais confiavel e com uma menor margem de erro que eu consiga pegar a referência de onde o usuário está vindo antes de acessar a lading page?

Observações:

  • Devido a algumas regras de negocio da aplicação eu não posso fazer diversos sites ou rotas na aplicação para, por exemplo: "meusite.com/facebook" essa rota será apenas para pessoas que vierem do facebook, etc...

  • Também não posso utilizar um queryparam, como por exemplo: "meusite.com/?source=facebook"

  • Ambos os casos não podem ser utilizados porque eu preciso garantir 100% de certeza que a pessoa veio do facebook. Nesse seu cenario se a uma pessoa clicar no link meusite.com/?source=facebook no whatsapp por exemplo, será considerado que ela veio do facebook, mesmo que ela tenha vindo do whatsapp. E por algumas questõesde regra de negocio do meu cliente e da forma que ele trabalha hoje esse caso irá acontecer com bastantante frequência. Nesse meu caso eu preciso que a pessoa entre em meusite.com e eu identifique se ela veio do facebook, instagram, etc... sem um link ou parametro na url especifico e que tenha uma precisão maior que o document.referrer

Obrigado pela atenção >:)

O Facebook possui o "Pixel" que faz isso que você precisa. Ele consegue identificar que o usuário veio do Facebook/Instagram

https://pt-br.facebook.com/business/tools/meta-pixel

vc nao pode ter diversas rotas que setam um cookie de acordo com seu canal (ex source=facebook quando vem pelo meusite.com/facebook) e então redireciona pra meusite.com?

Não, eu preciso garantir 100% de certeza que a pessoa veio do facebook. Nesse seu cenario se a uma pessoa clicar no link meusite.com/facebook no whatsapp por exemplo, será considerado que ela veio do facebook, mesmo que ela tenha vindo do whatsapp. Por algumas questões de regra de negocio do meu cliente e da forma que ele trabalha hoje esse caso irá acontecer com bastantante frequência. Nesse meu caso eu preciso que a pessoa entre em meusite.com e eu identifique se ela veio do facebook, instagram, etc... sem um link especifico. Obs.: Não precisa identificar todas as fontes, as mais importantes são facebook e instagram mesmo
nao precisa ser necessariamente /facebook, pode ser /6473080e-482a-489a-8501-cf018430da1d que vc configura para o google nem indexar. vc precisa só de um link por canal sem o link especifico, o unico jeito que vejo é o referrer, que pode ser um tiro no pé como vc já percebeu,nao da pra confiar no que vem ali
pior que não da para usar nenhuma rota. Mesmo que seja /6473080e-482a-489a-8501-cf018430da1d da vida. Tem que ser diretamente na rota principal, isso que complica muito as coisas... Sim o document.referrer hoje funciona, mas hoje ele não resolve 100% do problema. Atualmente eu estou usando um query param na url junto com o document.referrer quando vem do facebook/instagram, mas isso é algo que eu vou ter que tirar

Você pode usar um parâmetro na url, depois pega o valor desse parâmetro front e enviar pro back.

Acabei não colocando na descrição do problema, porém eu estou usando essa solução atualmente, passando um queryparam dizendo de qual plataforma ele vem, porém é uma solução temporaria e eu vou ter que tirar, porque eu preciso garantir 100% de certeza que a pessoa veio do facebook. Nesse seu cenario se a uma pessoa clicar no link meusite.com/?source=facebook no whatsapp por exemplo, será considerado que ela veio do facebook, mesmo que ela tenha vindo do whatsapp. E por algumas questõesde regra de negocio do meu cliente e da forma que ele trabalha hoje esse caso irá acontecer com bastantante frequência. Nesse meu caso eu preciso que a pessoa entre em meusite.com e eu identifique se ela veio do facebook, instagram, etc... sem um link ou parametro na url especifico.

boa tarde, falaram isso mais ou menos nos outros comentarios. Vejo muita gente usando os parâmetros utm_x.

Não sei como está essa dinâmica dos links no facebook e instagram, mas acredito que você disponibilizaria assim: meusite.com/index?utm_source=facebook no próprio facebook e no instagram é só mudar o parâmetro.

Acredito que pormais se seja vanila você poderia jogar para o servidor com relatova facilidade e não precisaria criar rotas para cada plataforma.

se mais tarde for usar um analitics, poderia usar os mesmos parâmetros.

Hoje estou usando algo parecido com esse formato, passando parametros na URL de acordo com a plataforma, mas eu não posso manter nesse formato. Preciso identificar a pessoa sem usar um link/parametro especifico, algo parecido com o que o document.document.referrer faz, porém com uma margem de erro menor
entendi, mas só para entender melhor... como este link vai parar nas redes sociais? É distribuído por você? Se sim, acho que a query param é uma das melhores opções mesmo.
Cara o que eu tenho de informação é seguinte: Segundo ele, ele faz divulgações para instagram e facebook do produto dele. O problema dele hoje é que segundo ele existem diversas ferramentas que podem ser usadas para encontrar o anuncio dele e essa pessoas após encontrar esses anuncios, compartilham em grupos de whatsapp, etc... E acontece diversos casos de "copiarem" o produto dele. Eu não sei exatamente como funciona essa operação dele. O que ele me passou foram diversas regras de negocio que eu tenho que implementar para tentar impedir que isso aconteça. Uma dessas regras de negocio é só deixar a pessoa acessar o contéudo que ele quer quando vim do facebook e quando não vim irá mandar para outro contéudo... Agora se eu passar esse valor na url, não vai adiantar porque vai ta no link de anuncio dele e não vai funcionar como ele espera...

Acho que você pode fazer uma aplicação proxy que valida de onde veio o request do usuario.

Achei esse post no SO, talvez ajude: https://pt.stackoverflow.com/questions/275590/%C3%89-poss%C3%ADvel-saber-em-qual-site-meu-link-foi-clicado E esse link no mdn https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer
eu dei uma pesquisa para fazer uma proxy, porém pelo o que eu vi peguaria o valor do http referer que acredito que seja a mesma coisa do document.referrer, se for isso mesmo ai acredito que não mudaria para melhor o meu cenario
e http.referer pode ser adulterado tb, de maneira bem fácil. É um campo bem merda para se tirar métricas.
Se for levar oque pode ou não se alterado, ele nunca vai confiar em nada. Ele pediu o mais confiavel possível e foi nisso que eu pensei.
Não é bem assim. http.referer vc consegue alterar simplesmente usando um Selenium da vida. Fácil e sem dor. IP o buraco é mais embaixo, vai te exigir pelo menos um proxy caseiro e fatalmente vai cair em regras de firewall. É bem complicado, senão impossível, vc se passar por um ASN alheio, então calma jovem, que aqui a pessoa sabe do que está falando.
Se a pessoa tem conhecimento sobre o Selenium, oq a impede de ter e usar o proxy? Meu ponto nao é complicado, pensei na solução mais simples e só, se a pessoa quiser muito ela vai burlar de qualquer forma.
Pensei so no usecase, são usuário simples que querem comprar um produto
Vc não está errado morph. Pense que minha resposta só complementa a sua. Dá para seguir a sua, e se o rapaz quiser se aprofundar um pouco mais, e precisar, ai segue vom o caminho complementar ali.

Boa noite! Solução alternativa: antes do cliente comprar o produto o formulário pergunta de onde ele veio, do Facebook, Instagram ou outra fonte. Já vi vários sites fazendo esse tipo de pergunta.

Outra solução seria usar ferramentas de terceiros parecidadas com o Google Analitics.

A tendência agora é primar pela privacidade dos usuários, informações de navegação ficarão cada vez mais difíceis de obter. Deixar explícito e de forma amigável que você quer saber de onde o usuário veio e que você vai armazenar esse dado é uma boa também.

não da para ser um formulario, pois quando a pagina carrega já tem que ter o contéudo personalizado de acordo com a fonte de trafego que pessoa chegou (facebook, instagram, etc...)

Veja só, o que você pode fazer é criar redirecionamentos e usar o storage para a aplicação do client, ou até mesmo cookies, já que existe o caso de voce criar suas próprias rotas, que podem fazer entender o que cada coisa é cada coisa, registra cada manipulação que seja importante do teu lead, se ele precisa vir da página principal, cria um redirecionamento com meu.site/veio-do-fb para internamente guardar o localstorage de onde o usuário veio, e quando for fazer os gets já recebe essa informação, já que você pode fazer o get com esses paramentros como query por de baixo dos panos

não posso ter redirecionamento, infelizmente todas as request tem que cair direto na rota principal, porque se a pessoa clicar no link meu.site/veio-do-fb pelo whatsapp por exemplo, será considerado que ela veio do facebook mesmo tendo clicado no link em outro local :\
Faz o seguinte, eu posso te ajudar, estudar melhor a case e a gente entra em um senso pra entender melhor caso queira e claro; https://instagram.com/isaque.geraldo

Vi que mencionou nao poder usar query params. Por qual motivo não pode utilizar? Acredito que explicando isso fica mais fácil te ajudar com base nas suas restrições!

Porque eu preciso garantir 100% de certeza que a pessoa veio do facebook. Se eu usar um query param por exemplo, se a pessoa clicar no link meusite.com/?source=facebook no whatsapp por exemplo, será considerado que ela veio do facebook, mesmo que ela tenha vindo do whatsapp. Ele precisa garantir que se a pessoa clicar em meusite.com no facebook será identificado que veio do facebook e se clicar em meusite.com no instagram seja identificado que veio do instagram, se for clicado em qualquer outro lugar como por exemplo no whatsapp não precisa identificar que veio do whatsapp, mas precisa ter 100% de certeza que não veio do facebook/instagram nesse caso... Isso acontece porque segundo o meu cliente, ele faz divulgações para instagram e facebook do produto dele. O problema dele hoje é que segundo ele existem diversas ferramentas que podem ser usadas para encontrar o anuncio dele e essa pessoas após encontrar esses anuncios, compartilham em grupos de whatsapp, etc... E acontece diversos casos de "copiarem" o produto dele. Eu não sei exatamente como funciona essa operação dele. O que ele me passou foram diversas regras de negocio que eu tenho que implementar para tentar impedir que isso aconteça. Uma dessas regras de negocio é só deixar a pessoa acessar o contéudo que ele quer quando vim do facebook/instagram e quando não vim irá mandar para outro contéudo... Agora se eu passar esse valor na url, não vai adiantar porque vai ta no link de anuncio dele e não vai funcionar como ele espera... Resumindo, o document.referrer seria perfeito para esse cenario, porque ele consegue identificar isso diretamente em meusite.com, o problema é apenas a precisão, o que eu precisava saber é se te algo com uma menor margem de erro que faça algo parecido com o que o document.referrer faz, ou se tiver alguma outra solução que funcione seguindo essa lógica que escrevi acima

Um jeito de vc ter certeza se o acesso veio a partir de um clique de anúncio é checar se o IP de origem do acesso. Normalmente quando vem de campanha no facebook, o IP reside em uma ASN do grupo meta ou facebook. Isso também funciona para Google Analytics e é assim que WAFs cpmo cloudflare por exemplo nos permitem filtrar regras por certas ASNs confiáveis.