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();

Monday, 27 July 2020

Tencent wants to take full control of long-time search ally Sogou

It’s been seven years since Tencent picked up a 36.5% stake in Sogou to fend off rival Baidu in the online search market. The social and gaming giant is now offering to buy out and take private its long-time ally.

NYSE-listed Sogou said this week it has received a preliminary non-binding proposal from Tencent to acquire its remaining shares for $9 each American depositary share (ADS) it doesn’t already own. That means Sohu, a leading web portal in the Chinese desktop era and the controlling shareholder in Sogou, will no longer hold an interest in the search firm.

Sohu’s board of directors has not yet had an opportunity to review the proposal or determine whether or not to take the offer, the company stated. Sogou’s shares leaped 48% on the news to $8.51 on Monday, yet still far below its all-time high at $13.85 at the time of its initial public offering.

Founded in 2005, Sogou went public in late 2017 billing itself as a challenger to China’s biggest search service Baidu, though it has long been a distant second. The company also operates the top Chinese input software, which is used by 482 million people every day to type and convert voice to text, according to its Q1 earnings report.

Ever since the strategic partnership with Tencent kicked off, Sogou, which means “Search Dog” in Chinese, has been the default search engine for WeChat and benefited immensely from the giant’s traffic, though WeChat has also developed its own search feature.

The potential buyout will add Sogou to a list of Chinese companies to delist from the U.S. as tensions between the countries heighten in recent times. It will also allay concerns amongst investors who worry WeChat Search would make Sogou redundant. So far WeChat’s proprietary search function appears to be gleaning data mainly within the app’s enclave, from users’ news feed, user-generated articles, e-commerce stores, through to lite apps integrated into WeChat.

That’s a whole lot of content and services targeted at WeChat’s 1.2 billion active users. Many people need not look beyond the chat app to consumer news, order food, play games, or purchase groceries. But there remains information outside the enormous ecosystem, and that’s Sogou’s turf — to bring what’s available on the open web (of course, subject to government censorship like all Chinese services) to WeChat users.

The arrangement reflects an endemic practice on the Chinese internet — giants blocking each other or making it hard for rivals to access their content. The goal is to lock in traffic and user insights. For instance, articles published on WeChat can’t be searched on Baidu. Consumers can’t open Alibaba shopping links without leaving WeChat.

Sogou is hardly WeChat’s sole search ally. To capture a full range of information needs, the messenger has also struck deals to co-opt fellow microblogging platform Weibo, Quora-like Zhihu, and social commerce service Xiaohongshu into its search pool.



from TechCrunch https://ift.tt/3321mmc
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support