-1

由于 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

我收到一个错误您应该阅读并同意 EULA 的规定。 如何正确传递复选框标志?

<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>
4

2 回答 2

0

尝试改变这一点

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

进入这个:

$post_data = http_build_query([
  'username' => 'LOGIN',
  'pw1' => 'PASSWORD',
  '_time' => '3306',
  'readed_eula' => 'true',
]);
于 2019-10-17T08:38:02.453 回答
0

通过回答Koala Yeung发表我的帖子,并且所有工作))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);
于 2019-10-17T08:46:57.253 回答