Check if the code exists on another site (remote Extract)

Asked

Viewed 50 times

0

Good afternoon, you guys!

I need to check some existing code on other sites.. type a widget the person will copy my code and put on her website, so I need to check if this code exists on her site before registering!

I don’t have a code yet, someone can help me?

I can locate this tag inside the HTML code

<!--NOMEDOMEUSITE-->

if I identify this part, it means that the user has the code on the site, someone can help me?

2 answers

0


You can do this in countless simple ways. In this answer I will quote two.

  • PHP pure
  • Javascipt with ajax jQuery

PHP pure (with file_get_contents and strpos)

<?php

/**
 * Url do site a ser consultado
 * Ex: https://dominio/rota
 */
$site = '<INSIRA A URL DO SITE AQUI>';

/**
 * A função file_get_contents
 * retorna o código fonte da página como um string
 */
$html = file_get_contents($site);

/**
 * Aqui seria a string que você quer checkar se está no site
 * Ex: <!--NOMEDOMEUSITE-->
 */
$search = "<!--NOMEDOMEUSITE-->";

/**
 * Agora que o html é uma string
 * Podemos checar se ela contém
 * o termo que você precisa
 *
 * Nota: strpos retorna a 
 * posição da string encontrada ou false
 * caso ele não encontre
 */
$pos = strpos($html, $search);


/**
 * Note o operador tripo "!=="
 * como strpos pode retornar valores
 * não booleanos que são interpretados como false
 * Esse operador irá checar se o valor $pos é false
 * e ainda se ele é do tipo boolean.
 */
if ($pos !== false) {
    echo "encontrou";
}
else {
    echo "não encontrou";
}

Javascript-enabled (with jQuery $.get and indexOf)

$.get('<URL A SER VERIFICADA>', function (html) {   
    /**
     * Aqui seria a string que você quer checkar se está no site
     * Ex: <!--NOMEDOMEUSITE-->
     */
    var search = "<!--NOMEDOMEUSITE-->";


    /**
     * Agora que o html é uma string
     * Podemos checar se ela contém
     * o termo que você precisa
     *
     * Nota: indexOf() retorna a 
     * posição da string encontrada ou -1
     * caso ele não encontre
     */
    var pos = html.indexOf(search);

    /**
     * Basta verificar o valor de pos
     * e fazer o que precisar
     */
    if ( pos > -1 ) {
        alert( "encontrou" );
    }
    else {
        alert( "não encontrou" );
    }

});

IMPORTANT

There are 2 cases where you will not be able to do this check directly. They are:

  1. If the user enters your widget via some tag manager (like Google Tagmanager for example) because the widget will be inserted via js on the user side (client).

  2. If the user enters his widget in the source code of a page in a restricted area (protected by login and password) on his website.

Related readings

  • Thanks! It worked out

0

The best method is to use a dedicated instance of Nodeiterator iterating all comments contained in a given page element.

Nodeiterator (IE >= 9)

function filterNone() {
  return NodeFilter.FILTER_ACCEPT;
}

function cleanString(str) {
  return str.toLowerCase().replace(/\s/g, '');
}

function getAllComments(rootElem) {
  let comments = [];
  let iterator = document.createNodeIterator(rootElem, NodeFilter.SHOW_COMMENT, filterNone, false);
  let curNode;
  while (curNode = iterator.nextNode()) {
    comments.push(curNode.nodeValue);
  }
  return comments;
}

window.addEventListener("load", function() {
  let myWebSite = 'meuSiteSuperNice.com';
  let allComments = getAllComments(document.body);
  let theyHaveMyWebSite = allComments.find(item => cleanString(item) === cleanString(myWebSite));

  if (theyHaveMyWebSite) {
    alert('Eles tem meu web site')
  } else {
    alert('Triste! Nao tem meu web site')
  };
});
<!-- 1 comentario -->

<!-- 2 comentario -->

<!-- 3 comentario -->

<!-- meuSiteSuperNice.com -->

<!-- 4 comentario -->

However, it is not a good approach to use the tag comment <!--...--> for that purpose. Iterating all comments on a page can have an extremely high consumption of computational resources.

The tag meta is the most suitable for its purpose (You can read about it here).

function cleanString(str) {
  return str.toLowerCase().replace(/\s/g, '');
}

let meta = document.querySelectorAll('meta[property^="testeSite:on"]')[0].getAttribute("content");
let myWebSite = 'meuSiteSuperNice.com';

if (cleanString(myWebSite) === cleanString(meta)) {
  alert('Eles tem meu web site')
} else {
  alert('Triste! Nao tem meu web site')
};
<head>


  <title>Site deles</title>

  <meta charset="UTF-8">
  <meta http-equiv="content-type" content="text/html;charset=UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta property="testeSite:on" content="meuSiteSuperNice.com" />

</head>

Browser other questions tagged

You are not signed in. Login or sign up in order to post.