Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Thursday, 28 May 2020

A 12 year journey ends as Skimlinks is acquired by retail marketing platform Connexity

Connexity, a lead-gen platform for online retailers, has acquired Skimlinks, a UK platform for publishers to make money through affiliate links. Terms of the deal were undisclosed. According to Crunchbase, Skimlinks had raised a total of $25.5M and reached a late a Series C stage of funding, the final round coming from Frog Capital which invested $16M.

An early Seed investor was Sussex Place Ventures way back in 2009. For context, San Francisco-based competitor VigLink, which has raised a total of $27.3 million, remains an independent company.

Sources in the VC industry indicate that the acquisition was a “decent one” that may even have hit three figures, with a possible a large-ish earnout and equity component. Certainly, this was not a ‘firesale,’ by any means.

Although coy on the price of the acquisition, co-founder and President Alicia Navarro said: “Every party, including many staff, has made money out of this deal and is very happy.”

Cofounded in 2007 by Navarro and Joe Stepniewski, Skimlinks rode the wave of online activity as publishers struggled to monetize their ballooning online operations in the mid-teens of the last decade. Affiliate programs allow publishers to get a cut of the revenue when their link drives a purchase on an e-commerce site. Skimlinks makes the process easier through automation.

Originally spinning out of an idea Navarro had about consumer online commerce habits — a startup called Skimbit which resembled Pinterest in some respects — it had scaled to the US by the time I interviewed Navarro in 2012.

In 2013 it took on a growth financing round led by Greycroft Partners.

A couple of years later the platform was driving more than $500 million in e-commerce sales for publishers.

By 2016 editorial content from its publisher network of 1.5M domains had driven nearly $1 billion of ecommerce transactions and the company said it was on a path to profitability.

In 2018 Navarro stepped away from the CEO position, taking on the role of President, and handed the reigns to Sebastien Blanc, previously Chief Revenue Officer.

Speaking to TechCrunch, Navarro said the COVID-19 pandemic had accelerated the growth of the business as more publishers in its network monetized the massively increased online traffic, brought about by global lockdown policies.

Bill Glass, CEO of Connexity said in a statement: “Our solutions help retailers acquire new customers and sales while enabling ecommerce-oriented publishers to monetize engaged shopping audiences. Combining the companies creates more scale on both sides of the marketplace.”

Sebastien Blanc, CEO of Skimlinks said: “By marrying Connexity’s CPC search budgets with the broad CPA affiliate monetization coverage of Skimlinks, we provide best-in-class monetization for publishers. Our combined scale will fortify Connexity as a critically important customer acquisition channel for retailers and will strengthen publisher monetization solutions.”

And what of the founders? Stepniewski has taken on a senior role with Facebook UK. Navarro is now working on a fresh startup she bills as “AirBnB-meets-Calm as a service” allowing founders or executives to unplug and get into what is known as ‘Deep Work’.

She is now in the process of early-stage fundraising, so her entrepreneurial journey is clearly going to continue.



from TechCrunch https://ift.tt/2ZJCbD7
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support