2017-08-17 129 views
0

我想从网站上获取一些数据。我有登录凭证,我可以通过curl登录,但是登录过程有第二阶段,我必须回答一个安全问题。使用curl处理动态url php

问题是我每次输入用户名,密码重定向到不同的网址。

作为例子: 登录网址:https://url.com 登录后:https://url?execution=e4s1&action=caDevicePrint(安全Q /页)

这里的执行= e4s1'就像e1s1,e1s2,e3s2登录后改变的每次。

我想动态地设置CURLOPT_URL。以下是我的代码:

$this->curl = curl_init();  
    curl_setopt($this->curl, CURLOPT_URL, "https://url?execution=e4s1&action=caDevicePrint"); 
    curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION,1); 
    curl_setopt($this->curl, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER,0); 
    curl_setopt($this->curl, CURLOPT_USERAGENT,$this->userAgent);  
    curl_setopt($this->curl, CURLOPT_COOKIEJAR,$this->cookieFile); 
    curl_setopt($this->curl, CURLOPT_COOKIEFILE,$this->cookieFile); 

    $results = curl_exec($this->curl); 
    echo $results; 
    if (curl_errno($this->curl)) { 
     echo "Failed loading <br>"; 
     var_dump(curl_error($this->curl)); 
     die(); 
    } 

    curl_close($this->curl); 
+0

你不说如何重定向工作,告诉我们,我们可能会有更多的帮助。它是一个http 300x'位置:'重定向? ''刷新重定向? JavaScript重定向?我们不能准确回答这个问题,没有这个信息... – hanshenrik

回答

0

您将需要获取标题。这将告知curl在其响应中包含标题。

curl_setopt($this->curl, CURLOPT_HEADER, TRUE); 

一旦你的头,你可以通过它们解析看到该网址是什么,该网站重定向你。

+0

OP不说如何重定向工作。这将工作,如果重定向是基于标头..如果它是一个标准的HTTP(300x)重定向,'CURLOPT_FOLLOWLOCATION'就足够了,然后卷曲遵循http 300x自动重定向....但直到OP告诉我们重定向的工作方式,我们只能假设..例如,如果它是一个基于JavaScript的重定向,这完全没有帮助:P – hanshenrik

+0

@hanshenrik这是关于JS登录的好处。 –

+0

谢谢@NickCoons ... –