public static function view($id) { httpCls::$response = false; httpCls::set('host', crawlConf::$host); httpCls::set('uri', $id); httpCls::set('agent', crawlConf::$browser[0]['agent']); httpCls::set('accept', crawlConf::$browser[0]['accept']); httpCls::set('cookie', crawlConf::$browser[0]['cookie']); $rs = httpCls::send(); //返回内容 //httpCls::$response = (httpCls::unchunk2preg(httpCls::$response)); return httpCls::$response; }
public function img($url) { httpCls::$response = ''; $info = parse_url($url); httpCls::set('host', $info['host']); httpCls::set('uri', $info['path'] . '?' . $info['query']); httpCls::set('agent', crawlConf::$browser[0]['agent']); httpCls::set('accept', crawlConf::$browser[0]['accept']); httpCls::set('cookie', crawlConf::$browser[0]['cookie']); httpCls::set('timeout', 120); $rs = httpCls::down(); $content = httpCls::$response; $file = pathinfo($info['path']); $data = explode("\r\n\r\n", $content); file_put_contents(ROOT . 'img/' . $file['filename'] . '.jpg', $data[1]); return true; }
public static function down() { if (self::$host) { $fp = fsockopen(self::$host, self::$port, self::$errno, self::$errstr, self::$timeout); self::$request = self::method(self::$method) . " " . self::$uri . " HTTP/1.0\r\n"; //请求方式 资源 协议 self::$request .= "Host: " . self::$host . "\r\n"; //服务器 self::$request .= "User-agent:" . self::$agent . "\r\n"; //客户端 foreach (self::$accept as $k => $v) { self::$request .= self::accept($k, $v) . "\r\n"; } if (self::$cookie != '') { self::$request .= "Cookie: " . self::$cookie . "\r\n"; } //POST的情况下 $post = self::$body . "\r\n"; if (self::$method == 2) { self::$request .= "Content-Length: " . strlen($post) . "\r\n"; } self::$request .= "Referer: http://" . self::$host . self::$uri . "\r\n"; self::$request .= "Connection: close\r\n"; self::$request .= "\r\n"; if (self::$method == 2) { self::$request .= $post; } echo '下载图片' . PHP_EOL; if ($fp) { // $fi = fopen(ROOT.'img/'.time().'.png', 'w'); fwrite($fp, self::$request); //写入内容 $str = ''; while (!feof($fp)) { $str = fgets($fp, 1024); // echo $str; self::$response .= $str; } // fclose($fi); fclose($fp); return true; } } return false; }