// Сохраняем настройки в файл
public function save($settings) {
$utm = $_POST["utm"];
file_put_contents($this->basePath . 'config/utm/'.$utm.'.json', json_encode($settings));
$this->setSettings();
}
@Nikkorfed, для одного из своих проектов запилил на CURLe.
<?php
/* Вводные данные
* Адрес организации вида: https://yandex.ru/maps/org/---id---
* Class, в котором находится рейтинг: 'orgpage-reviews-view__rating-score'
* Подключить библиотеку phpQuery: https://code.google.com/archive/p/phpquery/
*/
function curlshot_func() {
$get_url = 'https://yandex.ru/maps/org/---id---';
$refer = 'http://google.ru';
$headers = array (
"Cache-control: no-cache",
"Upgrade-insecure-requests: 1",
"DNT: 1",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp",
"Connection: keep-alive",
"Upgrade-Insecure-Requests: 1",
"Pragma: no-cache",
"TE: Trailers",
"Accept-language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $get_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
/*curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXYUSERPWD,'user:pass');*/
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_REFERER, $refer );
curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__ . '/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__ . '/cookie.txt');
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
curl_setopt($ch, CURLOPT_VERBOSE,1);
$data = curl_exec($ch);
if ($output === FALSE) {
// Если что-то пошло не так
echo 'Упс, ошибочка: ' . curl_error($ch);
return;
}
$document = phpQuery::newDocument($data);
$element = $document->find('.orgpage-reviews-view__rating-score')->text();
return $element; // не echo, а именно return корректно отображает данные в шорткоде
}
add_shortcode('curlshot', 'curlshot_func');
global $post;
$args = array(
'post_type' => 'post'
);
$lastposts = get_posts( $args );
foreach( $lastposts as $post ){
setup_postdata($post); // устанавливаем данные
$post_id = get_the_ID(); // получаем ID записи
update_post_meta( $post_id, 'allkeywords', $keywords );
// обновляем произвольное поле
}
function updated_meta() {
// какая-то задача, например ключевые слова
$keywords = 'ключевые фразы для серии постов';
$args = array(
'post_type' => 'post',
'post_status' => 'published'
);
$lastposts = get_posts( $args );
foreach ( $lastposts as $post ) {
setup_postdata($post); // устанавливаем данные
update_post_meta( get_the_ID(), 'allkeywords', $keywords );
}
}
add_action( '24_event', 'updated_meta', 1 );
Технические меры LinkedIn по блокировке скрапинга мешают контрактам hiQ с собственными клиентами, которые полагаются на эти данные. На юридическом жаргоне это называется «злостным вмешательством в контракт» (tortious interference with contract).
Суд не только легализовал эту практику, но запретил мешать конкурентам снимать информацию с вашего сайта в автоматическом режиме, если сайт является общедоступным. Суд подтвердил понятную логику, что заход бота-скрапера юридически не отличается от захода браузера. В обоих случаях «пользователь» запрашивает открытые данные — и что-то делает с ними на своей стороне.
Сейчас многие владельцы сайтов пытаются поставить технические препоны конкурентам, которые полностью копируют их информацию, не защищённую копирайтом. Например, цены на билеты, товарные лоты, открытые профили пользователей и т. д.
Некоторые сайты считают эту информацию «своей», а скрапинг расценивают как «воровство». Юридически это не так, что теперь закреплено официально в США.
Так же проверьте роли, совпадают или нет. У меня например: add_role( 'clientpro' ), установите свою.