如何将带有cURL的“已检查”发送到WikiMapia?

时间:2019-10-17 08:30:39

标签: php curl checkbox wikimapia

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

2 个答案:

答案 0 :(得分:0)

尝试更改此内容

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

对此:

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

答案 1 :(得分:0)

通过回答杨考拉和所有工作来发表我的帖子))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);