php curl exec 返回空,php – Curl返回空字符串

我有一个相当奇怪的问题.我可以访问网站(电子邮件和密码).抱歉,我无法向您显示此网站.我需要从它的内容中获取一些信息.

而不是我会告诉你我的代码.

//I form string of post request

$fields=array(

'name_of_login_field' => urlencode('test@gmail.com'),

'name_of_password_field' => urlencode('pass')

);

foreach($fields as $key=>$value)

{

$fields_string .= $key.'='.$value.'&';

}

$fields_string=rtrim($fields_string, '&');

然后我通过curl发送它.

$curlURL="URL";

if( $curl = curl_init() )

{

curl_setopt($curl, CURLOPT_URL, $curlURL);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");

curl_setopt($curl, CURLOPT_TIMEOUT, 10);

curl_setopt($curl, CURLOPT_HEADER, false);

curl_setopt($curl, CURLOPT_POSTFIELDS, $fields_string);

curl_setopt($curl, CURLOPT_USERAGENT, "mozilla/5.0 (ipad; cpu os 7_0_4 like mac os x) applewebkit/537.51.1 (khtml, like gecko) version/7.0 mobile/11b554a safari/9537.53");

$out = curl_exec($curl);

var_dump($out);

//var_dump($out);

curl_close($curl);

}

站点具有带两个输入的表单(登录密码).它还有一个带有名称的提交按钮和一些带名称的隐藏输入 – 重定向.

如果我将google.com或我们的网站设置为$curCURL,我会收到一些内容.如果我使用我需要解析的网站的URL,我会收到空​​字符串.怎么可能.我提出建议.可能有人见过类似的东西吗?

UPDATE

这是我的新鲜卷曲:

if( $curl = curl_init() )

{

curl_setopt($curl, CURLOPT_URL, $curlURL);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");

curl_setopt($curl, CURLOPT_TIMEOUT, 10);

curl_setopt($curl, CURLOPT_HEADER, false);

curl_setopt($curl, CURLOPT_POSTFIELDS, $fields_string);

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($curl, CURLOPT_USERAGENT, "mozilla/5.0 (ipad; cpu os 7_0_4 like mac os x) applewebkit/537.51.1 (khtml, like gecko) version/7.0 mobile/11b554a safari/9537.53");

$out = curl_exec($curl);

var_dump($out);

//var_dump($out);

curl_close($curl);

}

随着卷曲$out是错误的.如果我用CURLOPT_FOLLOWLOCATION删除字符串$out是空字符串.

UPDATE1

我检查了

curl -l desired-site.com

它只返回没有标题的内容.

然后我查了一下

curl -s -D - desired-site.com -o /dev/null

它返回了这个标题.

HTTP/1.1 200 OK

Server: nginx/1.2.1

Date: Thu, 07 May 2015 08:20:23 GMT

Content-Type: text/html

Transfer-Encoding: chunked

Connection: keep-alive

X-Powered-By: PHP/5.4.4-14+deb7u11

Set-Cookie: PHPSESSID=randon_number_of_letters; expires=Sat, 09-May-2015 12:07:03 GMT; path=/

Expires: Thu, 01 Jan 1970 00:00:01 GMT

Cache-Control: no-cache

Pragma: no-cache

Cache-Control: private

Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Last-Modified: Thu, 01 Jan 1970 00:00:01 GMT

它能以某种方式帮助吗?

UPDATE2 CURLOPT_VERBOSE给出相同的结果.但是当我将CURLOPT_HEADER设置为true时,我可以看到标题(没有跟随位置,有了它仍然返回false)

UPDATE3

我做这些事来设置cookie:

preg_match('/PHPSESSID=([A-Za-z0-9]+)/',$out, $matches);

$cookie="Cookie: PHPSESSID=".$matches[1];

然后添加到curl:

curl_setopt($curl1, CURLOPT_COOKIEFILE, $cookie);

curl_setopt($curl1, CURLOPT_COOKIEJAR, $cookie);

我做了另一个连接:$curl1 = curl_init()

我做了$cookie的var_dump和响应的标题. PHPSESSID与那里不同.我应该这样做,@ baf在评论中以其他方式说过什么?

(您必须打开表单页面,存储cookie,然后使用cookie再次发布)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值