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

Friday, 4 June 2021

In latest big tech antitrust push, Germany’s FCO eyes Google News Showcase fine print

The Bundeskartellamt, Germany’s very active competition authority, isn’t letting the grass grow under new powers it gained this year to tackle big tech: The Federal Cartel Office (FCO) has just announced a third proceeding against Google.

The FCO’s latest competition probe looks very interesting as it’s targeting Google News Showcase — Google’s relatively recently launched product which curates a selection of third party publishers’ content to appear in story panels on Google News (and other Google properties), content for which the tech giant pays a licensing fee.

Google started cutting content licensing deals with publishers around the world for News Showcase last year, announcing a total pot of $1BN to fund the arrangements — with Germany one of the first markets where it inked deals.

However its motivation to pay publishers to licence their journalism is hardly pure.

It follows years of bitter accusations from media companies that Google is freeloading off their content. To which the tech giant routinely responded with stonewalling statements — saying it would never pay for content because that’s not how online aggregation works. It also tried to fob off the industry with a digital innovation fund (aka Google News Initiative) which distributes small grants and offers free workshops and product advice, seeking to frame publishers’ decimated business models as a failure of innovation, leaving Google’s adtech machine scot free to steamroller on.

Google’s stonewalling-plus-chicken-feeding approach worked to stave off regulatory action for a long time but eventually enough political pressure built up around the issue of media business models vs the online advertising duopoly that legislators started to make moves to try to address the power imbalance between traditional publishers and intermediating tech giants.

Most infamously in Australia, where lawmakers passed a news media bargaining code earlier this year.

Prior to its passage, both Facebook and Google, the twin targets for that law, warned the move could result in dire consequences — such as a total shut down of their products, reduced quality or even fees to use their services.

Nothing like that happened but lawmakers did agree to a last minute amendment — adding a two-month mediation period to the legislation which allows digital platforms and publishers to strike deals on their own before having to enter into forced arbitration.

Critics say that allows for the two tech giants to continue to set their own terms when dealmaking with publishers, leveraging market muscle to strike deals that may disproportionately benefit Australia’s largest media firms — and doing so without any external oversight and with no guarantees that the resulting content arrangements foster media diversity and plurality or even support quality journalism.

In the EU, lawmakers acted earlier — taking the controversial route of extending copyright to cover snippets of news content back in 2019.

Following on, France was among the first EU countries to transpose the provision into national law — and its competition watchdog quickly ordered Google to pay for news reuse back in 2020 after Google tried to wiggle out of the legislation by stopping displaying snippets in the market.

It responded to the competition authority’s order with more obfuscation, though, agreeing earlier this year to pay French publishers for linking to their content but also for their participation in News Showcase — bundling required-by-law payments (for news reuse) with content licensing deals of its own devising. And thereby making it difficult to understand the balance of mandatory payments vs commercial arrangements.

The problem with News Showcase is that these licensing arrangements are being done behind closed doors, in many cases ahead of relevant legislation and thus purely on Google’s terms — which means the initiative risks exacerbating concerns about the power imbalance between it and traditional publishers caught in a revenue bind as their business models have been massively disrupted by the switch to digital.

If Google suddenly offers some money for content, plenty of publishers might well jump — regardless of the terms. And perhaps especially because any publishers that hold out against licensing content to Google at the price it likes risk being disadvantaged by reduced visibility for their content, given Google’s dominance of the search market and content discoverability (via its ability to direct traffic to specific media properties, such as based on how prominently News Showcase content is displayed, for example).

The competition implications look clear.

But it’s still impressive that the Bundeskartellamt is spinning up an investigation into News Showcase so quickly.

The FCO said it’s acting on a complaint from Corint Media — looking at whether the announced integration of the Google News Showcase service into Google’s general search function is “likely to constitute self-preferencing or an impediment to the services offered by competing third parties”.

It also said it’s looking at whether contractual conditions include unreasonable terms (“to the detriment of the participating publishers”); and, in particular, “make it disproportionately difficult for them to enforce the ancillary copyright for press publishers introduced by the German Bundestag and Bundesrat in May 2021” — a reference to the transposed neighbouring right for news in the EU copyright reform.

So it will be examining the core issue of whether Google is trying to use News Showcase to undermine the new EU rights publishers gained under the copyright reform.

The FCO also said it wants to look at “how the conditions for access to Google’s News Showcase service are defined”.

Google launched the News Showcase in Germany on October 1 2020, with an initial 20 media companies participating — covering 50 publications. Although more have been added since.

Per the FCO, the News Showcase ‘story panels’ were initially integrated in the Google News app but can now also be found in Google News on the desktop. It also notes that Google has said the panels will soon also appear in the general Google search results — a move that will further dial up the competition dynamics around the product, given Google’s massive dominance of the search market in Europe.

Commenting on its proceeding in a statement, Andreas Mundt, president of the Bundeskartellamt, said: “Cooperating with Google can be an attractive option for publishers and other news providers and offer consumers new or improved information services. However, it must be ensured that this will not result in discrimination between individual publishers. In addition, Google’s strong position in providing access to end customers must not lead to a situation where competing services offered by publishers or other news providers are squeezed out of the market. There must be an adequate balance between the rights and obligations of the content providers participating in Google’s programme.”

Google was contacted for comment on the FCO’s action — and it sent us this statement, attributed to spokesperson, Kay Oberbeck:

“Showcase is one of many ways Google supports journalism, building on products and funds that all publishers can benefit from. Showcase is an international licensing program for news — the selection of partners is based on objective and non-discriminatory criteria, and partner content is not given preference in the ranking of our results. We will cooperate fully with the German Competition Authority and look forward to answering their questions.”

The FCO’s scrutiny of Google News Showcase, follows hard on the heels of two other Google proceedings it opened last month, one to determine whether or not the tech giant meets the threshold of Germany’s new competition powers for tackling big tech — and another examining its data processing practices. Both remain ongoing.

The competition authority has also recently opened a proceeding into Amazon’s market dominance — and is also looking to extend another recent investigation of Facebook’s Oculus business, also by determining whether the social media giant’s business meets the threshold required under the new law.

The amendment to the German Competition Act came into force in January — giving the FCO greater powers to proactively impose conditions on large digital companies who are considered to be of “paramount significance for competition across markets” in order to pre-emptively control the risk of market abuse.

That it’s taking on so many proceedings in parallel against big tech shows it’s keen not to waste any time — putting itself in a position to come, as quickly as possible, with proactive interventions to address competitive problems caused by platform giants just as soon as it determines it can legally do that.

The Bundeskartellamt also has a pioneering case against Facebook’s ‘superprofiling’ on its desk — which links privacy abuse to competition concerns and could drastically limit the tech giant’s ability to profile users. That investigation and case has been ongoing for years but was recently referred to Europe’s top court for an interpretation of key legal questions.

 



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support