首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fopen()、睡眠(2)、fwrite()、fget()返回假响应(POST请求) PHP

fopen()、睡眠(2)、fwrite()、fget()返回假响应(POST请求) PHP
EN

Stack Overflow用户
提问于 2013-06-22 09:33:33
回答 1查看 766关注 0票数 0

$data连接2秒后,我想将它发布到$url。但不起作用。问题出在哪里?就像这样,它返回正常的站点。

代码语言:javascript
复制
//$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);

,这是我的最新代码:

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-22 11:16:55

下面是我编写的一个泛型类,目的是使curl更容易使用。首先,将其保存到一个文件中。

代码语言:javascript
复制
   <?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);
    }

}

?>

然后是你的密码。

代码语言:javascript
复制
    <?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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17249244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档