Я пишу задание cron для сервера для очистки данных с веб-сайта на языке PHP. Страница является обязательной, пользователь должен войти на сайт с помощью Google reCaptcha или с помощью OAuth Login с Facebook, Twitter или Google.
Я думаю, что обойти Google reCaptcha при входе в систему так сложно, поэтому я попытался написать код вот так:
function loginSite()
{
global $config;
$data = openPageWithCurl($config['loginPage']); // Return the result of CURL with cookies / userAgent
$dom = new simple_html_dom();
$domData = $dom->load($data);
$nodes = $domData->find("a");
$twitterLogin = "";
foreach ($nodes as $node) {
$name = $node->href;
if(strpos($name,'twitter')){
$twitterLogin = $name;
}
}
...
// Setting the website login credential
// Login Twitter
// Redirect back to TargetWebsite
...
...
}
Тогда я получаю $twitterLoggin = "/sothing/twitter/?timestamp=******&&authorization=***........."
Однако curl не может получить доступ к странице входа в Twitter ($config['baseURL'].$twitterLogin
). Ошибка - страница не найдена. Итак, я попытался проверить, что здесь не так.
Во-первых, я обнаружил, что на странице входа будет запущен некоторый клиентский скрипт (javascript), который запускает Google recaptcha и добавляет какой-то параметр в URL. Это означает, что URL-адрес будет изменен с http://www.example.com/login
на http://www.example.com/login?someParameter={somthing encrypted}&&somethingelse={encrypted too}
.
Я думаю, что причина, по которой curl
не может получить доступ, заключается в том, что URL-адрес входа в Twitter будет проверять, какая страница перенаправляется на страницу входа. curl не отправляется с реальной страницы входа или в URL-адресе страницы входа отсутствует параметр.
Вот некоторые решения, но я не знаю, как его завершить. sh это.
A) Получите окончательный URL-адрес / местоположение со стороны клиента и добавьте его обратно в функцию curl.
B) Использование других вещей для имитации клиентского браузера может выполнить вход в систему и вернуть html содержимое. Может быть python
или node.js
или какая-нибудь библиотека умеет?
Кто-нибудь может мне посоветовать?