我希望在连接2秒后将$data
发送到$url
。但它不起作用。哪里有问题?像这样它返回正常的站点。
//$url is set above to http://www.putlocker.com/file/CB79E6201EDBA3ED
//$hash variable is set above in the code
$post = fopen($url, "r");
if (!$post) die("Error\n");
$data = "hash=$hash&confirm=Continue%20as%20Free%20User";
sleep(2);
fwrite($post, "POST $url HTTP/1.1\r\n");
fwrite($post, "Referer: $url\r\n");
fwrite($post, "Content-type: application/x-www-form-urlencoded\r\n");
fwrite($post, "Host: www.putlocker.com");
fwrite($post, "Content-length: " . strlen($data) . "\r\n");
fwrite($post, "Accept: */*\r\n");
fwrite($post, "\r\n");
fwrite($post, "$data\r\n");
fwrite($post, "\r\n");
if ($post) {
while (($buffer = fgets($post, 4096)) !== false) {
echo $buffer;
}
if (!feof($post)) {
echo "Error fgets()\n";
}
}
fclose($post);
以下是我的最新代码:
require_once('curll.php');
libxml_use_internal_errors(true);
$url = "http://www.putlocker.com/file/CB79E6201EDBA3ED";
$curl = new curling();
$output = $curl->get_page($url); //call your landing page url from here
$dom_document = new DOMDocument();
$dom_document->loadHTML($output);
$dom_xpath = new DOMXPath($dom_document);
foreach($dom_xpath->query("//input[@name=\"hash\"]/@value") as $node) $hash=$node->textContent;
foreach($dom_xpath->query("//form/@action") as $node) $post_url=$node->textContent;
sleep(2);
$data = array('hash' => $hash, 'confirm' => 'Continue%20as%20Free%20User');
$output2 = $curl->post_page($post_url, $data);
$curl->close_session();
echo $output2;
答案 0 :(得分:0)
这是我写的一个通用类,使卷曲使用变得容易。首先将其保存到某个文件中。
<?php
class curling {
private $_ch = NULL;
private $_file = NULL;
private $_html = NULL;
private $_cookiejar = NULL;
public function __construct()
{
$this->init();
}
private function init()
{
$this->_ch = curl_init();
curl_setopt($this->_ch, CURLOPT_VERBOSE, 0);
curl_setopt($this->_ch, CURLOPT_HEADER, 0);
curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->_ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->_ch, CURLOPT_TIMEOUT,1000);
curl_setopt($this->_ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($this->_ch, CURLOPT_COOKIEJAR, "cookies.txt");
curl_setopt($this->_ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
}
/**
*
* Enter description here ...
* @param unknown_type $res
* @param unknown_type $data
*/
private function write($res, $data)
{
$this->_html .= $data;
return strlen($data);
}
/**
*
* Enter description here ...
* @param unknown_type $url
*/
function get_page($url)
{
if ($this->ch == NULL) $this->init();
curl_setopt($this->_ch, CURLOPT_URL, $url);
curl_setopt($this->_ch, CURLOPT_CONNECTTIMEOUT, 5);
$this->_html = curl_exec($this->_ch);
if (curl_errno($this->_ch) !== 0) {
throw new Exception("unable to retrive content", 100);
}
curl_close($this->_ch);
return $this->_html;
}
/**
*
* Enter description here ...
* @param unknown_type $url
* @param unknown_type $data
*/
function post_page($url, $data)
{
if ($this->ch == NULL) $this->init();
curl_setopt($this->_ch, CURLOPT_URL, $url);
curl_setopt($this->_ch, CURLOPT_POST, true);
curl_setopt($this->_ch, CURLOPT_POSTFIELDS, http_build_query($data));
$this->_html = curl_exec($this->_ch);
//curl_close($this->_ch);
return $this->_html;
}
function close_session()
{
curl_close($this->_ch);
}
}
?>
然后是你的代码。
<?php
require_once('curling.php');
libxml_use_internal_errors(true);
$url = "http://www.putlocker.com/file/CB79E6201EDBA3ED";
$curl = new curling();
$output = $curl->get_page($url); //call your landing page url from here
$dom_document = new DOMDocument();
$dom_document->loadHTML($output);
$dom_xpath = new DOMXPath($dom_document);
foreach($dom_xpath->query("//input[@name=\"hash\"]/@value") as $node) $hash=$node->textContent;
$data = array('hash' => $hash, 'confirm' => 'Continue%20as%20Free%20User');
$output2 = $curl->post_page($url, $data);
$curl->close_session();
echo $output2;