Как узнать количество подписчиков компании или профиля в LinkedIn? - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь получить номер подписчика, имя от компании LinkedIn или страницу профиля.

Текущий код:

$test = 'https://www.linkedin.com/company/zareklamy';

function file_get_contents_curl_linkedin($url) {
  if (!function_exists('curl_init')) {
    return file_get_contents($url);
  } elseif (!function_exists('file_get_contents')) {
    return '';
  }
    if (empty($options)) {
        $options = array(
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4,
            CURLOPT_TIMEOUT => $timeout
        );
    }
    if (empty($header)) {
        $header = array(
            "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*\/*;q=0.5",
            "Accept-Language: en-us,en;q=0.5",
            "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7",
            "Cache-Control: must-revalidate, max-age=0",
            "Connection: keep-alive",
            "Keep-Alive: 300",
            "Pragma: public"
        );
    }
    if ($header != 'NO_HEADER') {
        $options[CURLOPT_HTTPHEADER] = $header;
    }
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
$html = file_get_contents_curl_linkedin($test);
$html = htmlspecialchars($html);

echo $html;

Код, показанный выше

<html><head> <script type="text/javascript"> window.onload = function() { // Parse the tracking code from cookies. var trk = "bf"; var trkInfo = "bf"; var cookies = document.cookie.split("; "); for (var i = 0; i < cookies.length; ++i) { if ((cookies[i].indexOf("trkCode=") == 0) && (cookies[i].length > 8)) { trk = cookies[i].substring(8); } else if ((cookies[i].indexOf("trkInfo=") == 0) && (cookies[i].length > 8)) { trkInfo = cookies[i].substring(8); } } if (window.location.protocol == "http:") { // If "sl" cookie is set, redirect to https. for (var i = 0; i < cookies.length; ++i) { if ((cookies[i].indexOf("sl=") == 0) && (cookies[i].length > 3)) { window.location.href = "https:" + window.location.href.substring(window.location.protocol.length); return; } } } // Get the new domain. For international domains such as // fr.linkedin.com, we convert it to www.linkedin.com var domain = "www.linkedin.com"; if (domain != location.host) { var subdomainIndex = location.host.indexOf(".linkedin"); if (subdomainIndex != -1) { domain = "www" + location.host.substring(subdomainIndex); } } window.location.href = "https://" + domain + "/authwall?trk=" + trk + "&trkInfo=" + trkInfo + "&originalReferer=" + document.referrer.substr(0, 200) + "&sessionRedirect=" + encodeURIComponent(window.location.href); } </script> </head></html>`.

У этого есть window.location.href, и я не могу пропустить его, используя функцию file_get_contents_curl_linkedin.Есть ли способ создать поддельные COOKIES, используя file_get_contents для получения данных страницы LinkedIn?

Как я могу исправить мой код ниже, чтобы получить полный контент страницы из строки $test?Кроме того, я пытался пропустить его с помощью PhantomJS, но это не помогло.

...