使用PHP CURL进行OAuth登录来抓取网站

时间:2020-05-07 11:05:33

标签: php curl cookies web-scraping oauth

我正在编写服务器cronjob以使用PHP语言从网站上抓取数据。 该页面需要登录,用户应使用Google reCaptcha或使用OAuth登录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添加了一些参数。 这意味着该网址将从http://www.example.com/login更改为http://www.example.com/login?someParameter={somthing encrypted}&&somethingelse={encrypted too}

我认为curl无法访问的原因是Twitter登录URL,它将检查哪个页面重定向到登录页面。没有从实际登录页面发送的卷曲或缺少参数的登录页面网址。

这里有一些解决方案,但我不知道如何完成。

A)从客户端获取最终的URL /位置,并将其添加回curl函数。

B)使用其他方法来模拟客户端浏览器可以执行登录并返回html内容。可以是pythonnode.js或某些库可以做到这一点?

任何人都可以给我一些建议吗?

0 个答案:

没有答案