我在php中做一个小机器人登录到网站“A.com”,然后恢复会话,将其保存在我的服务器中,然后使用此会话重新连接并获取受限制网页的内容需要登录/密码。
此表格将与Curl连接:
<form action="wLoginUser.asp" method="post" name="FormLoginUser" id="FormLoginUser">
<input type="hidden" name="Page" id="Page" value= "/PasserAnnonce.asp" />
<input type="hidden" name="sQueryString" value= "" id="sQueryString" />
<table >
<tr><td height="20"></td></tr>
<tr >
<td class="if_label_field"><label id="id_lab_mail">Mail :</label></td>
<td><input type="text" id="idMailLogin" name="idMailLogin" size="35" value="fff@gmail.com"/></td>
</tr>
<tr >
<td class="if_label_field"><label id="id_lab_pwd">Mot de passe :</label></td>
<td><input type="password" id="idPasswordLogin" name="idPasswordLogin" size="20" value="78599g056" onkeypress= "KeyDownPasssword(event);"/></td>
</tr>
<tr >
<td></td>
<td>
<input type="checkbox" name="chk_session_open" id="chk_session_open" value="1" />
<span style="color: #CC0000;">Garder ma session ouverte (72h)</span>
<br/>
<input type="checkbox" name="chk_save_loginpwd" id="chk_save_loginpwd" value="1" checked/>
<span style="color: #0066FF;">Se souvenir du mail / passe (15j)</span>
<br/><br/>
<span >[Décocher si machine partagée]</font>
</td>
</tr>
<tr><td></td><td height="10"><img style="CURSOR:pointer" onclick="Login_OnClick();" src="/images/b_valider.gif" width="67" height="18" border="0" alt=""/></td></tr>
<tr><td height="20"></td></tr>
<tr align="left">
<td colspan="2">
<span class="info">Vous avez oublié votre mot de passe ? </span>
<a href="SendPassword.asp">Cliquez ici</a>
</td></tr>
</table>
</form>
这是我的完整代码(有效):
$link= 'http://www.tunisie-annonce.com/wLoginUser.asp';
$postfields = array(
'idMailLogin' => 'XXX@gmail.com',
'idPasswordLogin' => 'XXX',
'chk_session_open' => 'on',
'chk_save_loginpwd' => 'on'
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
$cookies = __DIR__.'\cookies.txt';
// For cookies
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookies);
$return = curl_exec($curl);
curl_close($curl);
/**************************************************
request 2 : get the content of restrected web page
**************************************************/
//the restricted web page require login!!
$lien2 = "http://www.tunisie-annonce.com/PasserAnnonce.asp";
$curl = curl_init($lien2);
curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
// Read from cookies
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookies);
$return = curl_exec($curl);
//show restricted web page
echo $return;
curl_close($curl);
我测试了代码,它与其他网站完美配合......但是对于这个网站来说它不起作用(没有显示错误).. 我的问题是: 导致此错误的潜在问题是什么?
答案 0 :(得分:2)
您应该在exec之后尝试curl_getinfo($curl)
以查看服务器为您提供的响应。
答案 1 :(得分:1)
链接应为
$link = 'http://www.tunisie-annonce.com/LoginUser.asp';
表单还有2个隐藏字段
<input type="hidden" name="Page" id="Page" value="/PasserAnnonce.asp">
<input type="hidden" name="sQueryString" value="" id="sQueryString">
始终返回所说的内容,而非预期
<input type="checkbox" name="chk_session_open" id="chk_session_open" value="1">
因此
'chk_session_open' => '1',
'chk_save_loginpwd' => '1'
登录按钮有javascript,所以检查函数
中会发生什么<img style="CURSOR:pointer" onclick="Login_OnClick();" src="/images/b_valider.gif" width="67" height="18" border="0" alt="">
所以,有了这些,你应该检查问题的来源。注意:您应该在登录过程中实际复制他们所做的一切。