Как я могу отправить "проверено" с CURL в WikiMapia? - PullRequest
0 голосов
/ 17 октября 2019

Поскольку в Wikimapia возникла проблема с обновлением лимита ключей, я хочу автоматически сгенерировать их через cURL и затем сохранить их в базе данных. Как я могу это реализовать? Я авторизован на сайте, как этот

// URL скрипта авторизации
$login_url = 'http://wikimapia.org/user/login/';

// параметры для отправки запроса - логин и пароль
$post_data = 'username=LOGIN&pw1=PASSWORD&_time=3306';

// создание объекта curl
$ch = curl_init();

// используем User Agent браузера
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);

// задаем URL
curl_setopt($ch, CURLOPT_URL, $login_url );

// указываем что это POST запрос
curl_setopt($ch, CURLOPT_POST, 1 );

// задаем параметры запроса
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

// указываем, чтобы нам вернулось содержимое после запроса
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// в случае необходимости, следовать по перенаправлени¤м
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

/*
    Задаем параметры сохранени¤ cookie
    как правило Cookie необходимы для дальнейшей работы с авторизацией
*/

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');

Когда я публикую запрос Wikimapia:

http://wikimapia.org/api/?action=create_key_process&readed_eula=true&api_use=1&site_name=&application_name=333&platform=333

Я получаю сообщение об ошибке Вы должны прочитать и согласиться с лицензионным соглашением. Как мне правильно установить флажок?

<label for="readed_eula" class="checkbox">
            <input type="checkbox" id="readed_eula" name="readed_eula" value="true"> I have read Wikimapia Terms of Service
        </label>

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

сделал мой пост ответом Коала Йеунг , и все работает)) THX

  // выполняем запрос для авторизации
    $postResult = curl_exec($ch);
    $timeout = 5; // set to zero for no timeout
    $url2= "http://wikimapia.org/api/?action=create_key_process";
    $post_data = http_build_query([
      'readed_eula' => 'true',
      'api_use' => 1,
      'site_name' => '',
      'application_name' => '444',
      'platform' => '444',
    ]);
    // задаем URL
    curl_setopt($ch, CURLOPT_URL, $url2 );

    // указываем что это POST запрос
    curl_setopt($ch, CURLOPT_POST, 1 );

    // задаем параметры запроса
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

    // указываем, чтобы нам вернулось содержимое после запроса
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    // в случае необходимости, следовать по перенаправлени¤м
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $test = curl_exec($ch);
0 голосов
/ 17 октября 2019

Попробуйте изменить это

$post_data = 'username=LOGIN&pw1=PASSWORD&_time=3306';

на это:

$post_data = http_build_query([
  'username' => 'LOGIN',
  'pw1' => 'PASSWORD',
  '_time' => '3306',
  'readed_eula' => 'true',
]);
...