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

Tuesday, 30 March 2021

A trove of imported console games vanish from Chinese online stores

In the world’s largest gaming market, China, console games play a relatively small part as their revenue has been meager compared to mobile and PC games for years — at least by the official numbers (more on this later). There remains a community of hardcore console lovers, but they are finding it harder to get hold of devices and cartridges recently.

A handful of grey market videogame console vendors on Taobao stopped selling and shipping this week, according to checks by TechCrunch and online posts by gamers. Before we examine what might be happening here, a bit of industry history is needed.

In 2000, China banned the sale and import of videogame consoles as concerns over addiction in teenagers grew. Even with the ban, imported consoles still existed in the grey market targeting a group of loyal players. Meanwhile, the online PC and mobile gaming industry flourished, in part thanks to their affordability and the social experience built into their mechanics.

When China finally lifted its restriction on consoles in 2015, giants like Sony and Microsoft quickly responded by releasing Chinese editions of their products through local partners. Nintendo Switch hit the Chinese shelves in 2019 via a much-anticipated partnership with Tencent, which itself is the world’s largest gaming firm. But the grey market largely persisted because mainland Chinese versions of the consoles are subject to strict regulatory oversight, which limits users’ choice to a small friendly range approved by censors.

Many Chinese players thus resort to brick-and-mortar electronics bazaars and online marketplaces to find imported editions of PlayStation, Xbox, and Nintendo Switch, along with their games. These products normally enter China through parallel trading, the import of legitimate goods through unauthorized channels. The games that are brought in normally lack a Chinese gaming license, which is hard to obtain even by local publishers.

Several major videogame console importers on Taobao have suspended business. Screenshot: TechCrunch

It’s unclear how many imported consoles and console games were taken down from Taobao and what triggered the purge. Tgbus, one of the largest console game sellers on Taobao with 462,000 followers, currently has zero product listing. When asked by TechCrunch, a customer service staff said the store has temporarily halted shipping due to “a water leak in the warehouse.” When we pressed further, the person said it was due to “an electrical-equipment failure.”

Other vendors keep their responses vague, citing “special reasons” for the suspended services. One seller named the “Shanghai Gaming Console Store” said it suspended its business at the request of Taobao, without elaborating further.

Alibaba could not be immediately reached for comment.

The incident appears to inflict mostly console sellers with a sizable business at this moment. Imported cartridges and console devices can still be found on smaller Taobao stores and alternative platforms like Pinduoduo by searching the right keyword.

Some users see the move as China further tightening its grip on what gamers get to play. Over the past year, Apple’s China App Store removed thousands of games to wipe out games without China’s official greenlight. Other motives are politcal. Animal Crossing was pulled from grey market stores on Taobao and Pinduoduo after one of Hong Kong’s most well-known pro-democracy activists used the game as his protest ground.

Other users point out that customs officers regularly clamp down on parallel trading, which is designed to evade import tax because goods are carried by traders who appear as regular travelers. This isn’t the first time the console grey market has been hit, either. Some grey goods manage to fly under the radar before they attract critical sales. There are signs that the new Monster Hunter Rise, a Nintendo-Switch exclusive which isn’t available on the Chinese console edition, is stoking much interest among local players in recent weeks and may have driven some imports.



from TechCrunch https://ift.tt/3sCy7QD
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support