从卷曲结果中提取图像

时间:2013-07-04 18:27:20

标签: php image curl

我需要使用CURL显示来自网址的图片。但是在运行此代码后,我只能获得文本数据。没有显示图像?$ one包含验证码图像,我希望用户通过查看image.plz帮助来填充验证码...

curl_setopt( $ch, CURLOPT_USERAGENT,$usergaent );
curl_setopt( $ch, CURLOPT_URL, 'http://sitproject.com/verification.asp?source=login' );
curl_setopt ($ch, CURLOPT_HTTPHEADER, $httpheader);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch,CURLOPT_REFERER,"http://site2sms.com/login.asp");
$one = curl_exec( $ch );
echo $one;


while debugging $one contains this only no binary image data:

<body>
<div class="success">Thanks for using Sitproject.Com! You are logged into your Account Successfully to Proceed Further Please Enter Below Displayed 3 Digits Security Code in the Input Box!</div>
<table width="1079" height="54" border="0">
 <tr>
<td>
<img src="security/captcha.asp" />
<br />
Please Type the 3 Digits Displayed above in the Image and Click on Proceed Further Button to use the Free Services?
<br />
<form name="frmVerify" action="auth.asp" method="post">
<input type="hidden" name="txtSource" value="captcha" />
<input type="text" name="txtCaptcha" maxlength="3" />
<input type="submit" value="Proceed Further" />
</form>
</td>
 </tr>
 <tr>
<td>Note: If you are having any problem with Security Code you can mail us at support@sitproject.com!</td>
</tr>
</table>
</body>

2 个答案:

答案 0 :(得分:1)

您需要第二个请求,请求查看响应的验证码图片位于:

security/captcha.asp

我会说有一个验证码,他们可能不希望这样的机器人试图使用该服务,所以你需要验证你没有违反任何条款。

答案 1 :(得分:0)

你的情况

<?php 
$url = "https://api.github.com/users/softvar"; //enter url to extract from
$send_curl = curl_init($url);
curl_setopt($send_curl, CURLOPT_URL, $url);

curl_setopt($send_curl, CURLOPT_HEADER, false);
curl_setopt($send_curl, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($send_curl, CURLOPT_USERAGENT,'softvar'); // your useragent name
curl_setopt($send_curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($send_curl, CURLOPT_HTTPHEADER,array('Accept: application/json', "Content-type: application/json"));
curl_setopt($send_curl, CURLOPT_FAILONERROR, FALSE);
curl_setopt($send_curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($send_curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($send_curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$json_response = curl_exec($send_curl);
echo $json_response; // response in JSON
$response = json_decode($json_response, true);
echo '</br></br>';

$img =  $response['avatar_url']; // instead of 'avatar_url' enter the element name which contains the image url

//while debugging $one contains this only no binary image data:
?>
<body>
<div class="success">Thanks for using Sitproject.Com! You are logged into your Account Successfully to Proceed Further Please Enter Below Displayed 3 Digits Security Code in the Input Box!</div>
<table width="1079" height="54" border="0">
 <tr>
<td>
<img src="<?php echo $img;?>" />
<!-- Your captcha will display here-->
<br />
Please Type the 3 Digits Displayed above in the Image and Click on Proceed Further Button to use the Free Services?
<br />
<form name="frmVerify" action="auth.asp" method="post">
<input type="hidden" name="txtSource" value="captcha" />
<input type="text" name="txtCaptcha" maxlength="3" />
<input type="submit" value="Proceed Further" />
</form>
</td>
 </tr>
 <tr>
<td>Note: If you are having any problem with Security Code you can mail us at support@sitproject.com!</td>
</tr>
</table>
</body>

这是一个完全有效的例子。试试吧。

这就是你获取东西的方式。作为回应,您将根据CURLOPT_HTTPHEADER获取数据。在这里,我使用了JSON

然后提取你想要的image_url并放在你想要的任何地方。

如果这样可以解决您的问题,请点击接受此操作。