2013-07-04 68 views
-1

我需要使用CURL来显示来自url的图像。但运行此代码后,我只能获取文本数据。没有图像显示?在$一个含有验证码图像,我希望用户通过看image.plz帮助填写验证码...从curl结果中提取图像

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 [email protected]!</td> 
</tr> 
</table> 
</body> 
+0

您是否已经在HTML响应中读取了消息...? – CBroe

回答

1

你需要第二个请求,请求验证码图像,从看着响应,是:

security/captcha.asp 

我会说因为有验证码,他们可能不希望机器人像这样试图使用该服务,所以你需要确认你是不是违反任何条款。

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 [email protected]!</td> 
</tr> 
</table> 
</body> 

这是一个完全工作的例子。尝试一下。

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

然后提取你想要的image_url并放到任何你想要的位置。

如果这解决了您的问题,请点击以接受此问题。

+0

header(“Content-Type:image/bmp”); header(“Content-Disposition:inline; filename = captcha.bmp”); echo $ one; –

+0

我必须转移这段代码来分离php,否则它将无法正常工作。因为页眉被更改为image/bmp。 –

+0

我没有得到你。请清楚解释你的问题。 – softvar