Class
  • Tip&Tech
[ÇÔ¼ö] fopen ÇØ°á¹× ¸ÞŸ°Ë»ö¼Ò½ºÂü°í
±Û¾´ÀÌ »Ç·ç ³¯ Â¥ 05-06-27 17:11 Á¶ ȸ 11945
°£ÆíURL https://phpschool.com/link/tipntech/40685 º¹»ç

SyntaxHighlight·Î º¸±â

Link1 http://dnsolution.co.kr/dnmeta/naver.php (527)
ÀÚ·á¿¡µî·ÏÀ̾ȵdz׿± ¿Ö±×·±´ÙÁö.

fopen´ë¿ëÀ¸·Î »ç¿ëÇغ¸¼¼¿±
¸ÞŸ¼Ò½ºµ¥¸ð: http://dnsolution.co.kr/dnmeta/naver.php

<?
class BrowserEmulator {

var $headerLines = Array();
var $postData = Array();
var $authUser = "";
var $authPass = "";
var $port;
var $lastResponse = Array();
var $debug = false;

function BrowserEmulator() {
$this->resetHeaderLines();
$this->resetPort();
}


function addHeaderLine($name, $value) {
$this->headerLines[$name] = $value;
}


function resetHeaderLines() {
$this->headerLines = Array();







$this->headerLines["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";



}
/**
* $urlºÒ·¯fopenÀ» ¸¸µê
* °ªÀ»ºÎ¸§. ¸ðµçÇìµå¿¡ º¸³¿, µ¥ÀÌÅÍ¿Í»ç¿ëÀÚº¸¾Èµ¥ÀÌŸº¸³¿.
* ÆÄÀÏÁ¶Á¤µÇ¾úÀ»½Ã µÇµ¹¸², or ¿À·ù½Ã¾ø¿¥.
**/
function fopen($url) {
$this->lastResponse = Array();

preg_match("~([a-z]*://)?([^:^/]*)(:([0-9]{1,5}))?(/.*)?~i", $url, $matches);

$protocol = $matches[1];
$server = $matches[2];
$port = $matches[4];
$path = $matches[5];
if ($port!="") {
$this->setPort($port);
}
if ($path=="") $path = "/";
$socket = false;
$socket = fsockopen($server, $this->port);
if ($socket) {
$this->headerLines["Host"] = $server;

if ($this->authUser!="" && $this->authPass!="") {
$this->headerLines["Authorization"] = "Basic ".base64_encode($this->authUser.":".$this->authPass);
}

if (count($this->postData)==0) {
$request = "GET $path HTTP/1.0\r\n";
} else {
$request = "POST $path HTTP/1.0\r\n";
}

if ($this->debug) echo $request;
fputs ($socket, $request);

if (count($this->postData)>0) {
$PostStringArray = Array();
foreach ($this->postData AS $key=>$value) {
$PostStringArray[] = "$key=$value";
}
$PostString = join("&", $PostStringArray);
$this->headerLines["Content-Length"] = strlen($PostString);
}

foreach ($this->headerLines AS $key=>$value) {
if ($this->debug) echo "$key: $value\n";
fputs($socket, "$key: $value\r\n");
}
if ($this->debug) echo "\n";
fputs($socket, "\r\n");
if (count($this->postData)>0) {
if ($this->debug) echo "$PostString";
fputs($socket, $PostString."\r\n");
}
}
if ($this->debug) echo "\n";
if ($socket) {
$line = fgets($socket, 1000);
if ($this->debug) echo $line;
$this->lastResponse[] = $line;
$status = substr($line,9,3);
while (trim($line = fgets($socket, 1000)) != ""){
if ($this->debug) echo "$line";
$this->lastResponse[] = $line;
if ($status=="401" AND strpos($line,"WWW-Authenticate: Basic realm=\"")===0) {
fclose($socket);
return FALSE;
}
}
}
return $socket;
}

/**
* Æ÷Æ®Ãß°¡. Æ÷Æ®ÆĶó¸ÞÅÍ°ª HTTP POST ¿ä±¸À» ¹Ùµð¿¡ º¸³¿.
**/
function addPostData($name, $value) {
$this->postData[$name] = $value;
}

/**
* ¸ðµçÀϹÝÆ÷Æ®ÆĶó¸ÞÅÍÁö¿ò.
**/
function resetPostData() {
$this->postData = Array();
}

/**
* »ç¿ëÀÚÆ佺¿öµå »ç¿ë¿ä±¸.
* .
**/
function setAuth($user, $pass) {
$this->authUser = $user;
$this->authPass = $pass;
}

/**
* »ç¿ëÀÚÀϹÝÆ÷Æ®¼±Åÿ䱸.
**/
function setPort($portNumber) {
$this->port = $portNumber;
}

/**
* º¸³½»ç¿ëÀڱ⺻ HTTP default(80)¸®¼Â¿ä±¸.
**/
function resetPort() {
$this->port = 80;
}


/**
* $url ºÒ·¯ÆÄÀÏÀ»¸¸µê.
* °ªÀ»ºÎ¸£°í. Çìµåº¸³¿, µ¥ÀÌÅÍ¿Í»ç¿ëÀÚº¸¾È.
* ¿ä±¸ÆÄÀϼº°øÀûÀ¸·Î Á¤·Ä½Ã µÇµ¹¸², ¶Ç´Â¿À·ù½·±è.
**/
function file($url) {
$file = Array();
$socket = $this->fopen($url);
if ($socket) {
$file = Array();
while (!feof($socket)) {
$file[] = fgets($socket, 10000);
}
} else {
return FALSE;
}
return $file;
}

function getLastResponseHeaders() {
return $this->lastResponse;
}
}



/*



// ¿¹Á¦ÄÚµå



$be = new BrowserEmulator();
$be->addHeaderLine("Referer", "http://dnsolution.co.kr/");
$be->addHeaderLine("Accept-Encoding", "x-compress; x-zip");
$be->addPostData("Submit", "OK");
$be->addPostData("item", "42");
$be->setAuth("admin", "secretpass");
// also possible:
// $be->setPort(10080);



$file = $be->fopen("http://dnsolution.co.kr/somepage.html");
$response = $be->getLastResponseHeaders();



while ($line = fgets($file, 1024)) {
// ÆÄÀÏwidth¾Æ¹«°Å³ª!
}
fclose($file);



*/



?>

Àüü´ñ±Û¼ö 3

  • ±â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§Ä¡Áî¹ö°Å 05-06-27 08:40

    | »èÁ¦¼Ò½ºº¸±â

  • fopen() À̳ª fsockopen() À¸·Î ¿­¸®Áö ¾Ê´Â ÆäÀÌÁö´Â file() ·Î Àß ¿­¸®´õ±º¿ä,
    ±×¸®°í post Çü½Ä form ÆäÀÌÁö´Â ¾Æ·¡ ÇÔ¼ö·Î Àß ¿­¸³´Ï´Ù.

    function HTTP_Post($URL,$data, $referrer=\"\") {

    // parsing the given URL
    $URL_Info=parse_url($URL);

    // Building referrer
    if($referrer==\"\") // if not given use this script as referrer
    $referrer=$_SERVER[\"SCRIPT_URI\"];

    // making string from $data
    foreach($data as $key=>$value)
    $values[]=\"$key=\".urlencode($value);
    $data_string=implode(\"&\",$values);

    // Find out which port is needed - if not given use standard (=80)
    if(!isset($URL_Info[\"port\"]))
    $URL_Info[\"port\"]=80;

    // building POST-request:
    $request.=\"POST \".$URL_Info[\"path\"].\" HTTP/1.1\\n\";
    $request.=\"Host: \".$URL_Info[\"host\"].\"\\n\";
    $request.=\"Referer: $referer\\n\";
    $request.=\"Content-type: application/x-www-form-urlencoded\\n\";
    $request.=\"Content-length: \".strlen($data_string).\"\\n\";
    $request.=\"Connection: close\\n\";
    $request.=\"\\n\";
    $request.=$data_string.\"\\n\";

    $fp = fsockopen($URL_Info[\"host\"],$URL_Info[\"port\"]);
    fputs($fp, $request);
    while(!feof($fp)) {
    $result .= fgets($fp, 128);
    }
    fclose($fp);

    return $result;
    }

    »ç¿ëÀº

    $output=HTTP_Post(\"http://www.server.com/script.php\",$_POST);

    $_POST ´Â post Æû¿¡¼­ ÇÊ¿äÇÑ º¯¼öµéÀÇ ¹è¿­ÀÔ´Ï´Ù. ¿¹¸¦µé¸é
    $_POST[\"name\"] = \"php\";
    $_POST[\"pwd\"] = \"school\";
    $_POST[\"email\"] = \"webmaster@phpschool.com\";

    Ãâó http://man.phpschool.com/manual/en/ref.curl.php
  • ±â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§³­¹Ùº¸ 05-07-03 08:33

    | »èÁ¦¼Ò½ºº¸±â

  • ÀÌ°Å µÇ³× ¤Ñ¤Ñ;;
    Çæ... ½Å±â ¤Ñ¤Ñ;;;;;;;;;;; ÇØ´õ Á¶ÀÛÀÌ ¹«¼·´Ù´Ï±î..
  • ±â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§yahosarang 05-08-24 22:53

    | »èÁ¦¼Ò½ºº¸±â

  • ¿ÀÈ£ ½Å±âÇÏ³× ;; ÀÌ ÀÚ·á °í¸¿½À´Ï´Ù. Àß ¸ð¸£°ÚÁö¸¸, Á¦°¡ ã´ø°Å¿¡¿ä.

    ±¸±ÛÀ̸ÞÀÏ °®°í ½Í¾î¿ä. yahosarang@hanmail.net ¾Æ¹«°Å³ª Çϳª ¸¸µéÁÖ¼¼¿ä.. °¡ÀÔÀÌ ¾ÈµÇ°í, ÃßõÁ¦¶ó´Âµ¥¿ä.
  • °Ô½Ã¹° 94°Ç RSS
¹øÈ£ºÐ·ùÁ¦¸ñ±Û¾´À̳¯Â¥Á¶È¸
94 ¼­¹ö¿î¿µ curl ¿¡¼­ µµ¸ÞÀÎÀ» ƯÁ¤ IP·Î Á¢¼ÓÇϵµ·Ï ¼³Á¤ --resolve [4] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§°ø´ë¿©ÀÚ 21-10-21 3024
93 ¼­¹ö¿î¿µ centos7 ca-bundle.crt ¾÷µ¥ÀÌÆ® ¹æ¹ý. php ¿¡¼­ file_get_conte¡¦ [1] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§°ø´ë¿©ÀÚ 21-10-01 1002
92 Á¤º¸ Amp - PHP ºñµ¿±â ÇÁ·Î±×·¡¹Ö [5] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§BiHon 21-04-04 2616
91 ¼³Ä¡/¼³Á¤ CentOS 6 ¸¦ À§ÇÑ yum repository ¼³Á¤ °¡À̵å [4] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§°ø´ë¿©ÀÚ 21-02-19 4229
90 ¼­¹ö¿î¿µ CentOS6 yum ÇØ°á ¹æ¹ý... [4] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§Loser¢âÀ̽½¾ð´Ï 20-12-11 5821
89 ¼­¹ö¿î¿µ ¸®´ª½º shell ¿¡¼­ ¼­¹öÀÇ ¿ÜºÎ ¾ÆÀÌÇÇ È®ÀÎÇϱâ [2] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§ÇïÇÁ´Â¼¿ÇÁ 20-11-16 2080
88 ¼³Ä¡/¼³Á¤ nginx request method - options 405 Not Allowed [2] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§¶ò°¡¶ò°¡»× 19-05-13 4340
87 ±âŸ slack À¸·Î À¥¼­ºñ½º¿¡ push¼­ºñ½º ±¸ÇöÇϱâ. [4] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§KoKoBop 18-10-30 2270
86 ÇÔ¼ö mailgun(¸ÞÀÏ°Ç) ¹ß¼Û¿ë class ÆÄÀÏ [4] ÷ºÎÆÄÀÏ Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§¸í¶ûÆóÀÎ 18-05-12 2195
85 ÇÔ¼ö CurlÀ» ÀÌ¿ëÇÑ FTP ¿äû/ó¸® PHP Ŭ·¡½º ÆÄÀÏ [6] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§¸í¶ûÆóÀÎ 18-02-28 2244
84 ±âŸ Guzzle + domCrawler À» ÀÌ¿ëÇÑ ½ÉÇà php À¥ÆĽÌ(½ºÅ©·¡ÇÎ) [7] ¸µÅ© ÷ºÎÆÄÀÏ Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§¸í¶ûÆóÀÎ 18-01-03 4212
83 Á¤º¸ Àΰ£ ģȭÀû command line HTTP Ŭ¶óÀ̾ðÆ® [3] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§¿£½Ã¢â 17-02-23 3471
82 ¼³Ä¡/¼³Á¤ php79 stack [24] ¸µÅ© Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§ºó°æÀ± 16-04-01 5607
81 ¼³Ä¡/¼³Á¤ laravel ¼³Ä¡ (·ÎÄÃ.»ç¿ëÀÚ °èÁ¤) [3] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§¾ÆºüºÒ´ç 16-03-29 3869
80 º¸¾È ±¸±Û ¸®Ä¸Â÷ »ç¿ë¹ý (±×´©º¸µå 4) [5] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§¾ÆºüºÒ´ç 15-12-06 8153
79 ¼³Ä¡/¼³Á¤ [1¿ø ÆÁ] Node.js ¼³Ä¡ (feat. NVM) / NPM ¼³Ä¡ [7] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§·¹¾ËÀâºÎ 15-12-04 4251
78 ÇÔ¼ö PHP - cURL ´ë¿ë Purl [6] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§¾Ë¸¯ 15-10-23 5245
77 Á¤º¸ [²Ä¼ö] exec »ç¿ë¾ÈÇÏ°í CURL À» ¹é±×¶ó¿îµå·Î ½ÇÇàÇϱâ [2] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§µ¹À»µç³²ÀÚ 15-07-31 4799
76 ÇÔ¼ö ±¸±Û ¹ø¿ª API¸¦ ÀÌ¿ëÇÑ ÆÄÀÏ ¹ø¿ª php [7] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§leon_flash 15-07-07 5326
75 ¼­¹ö¿î¿µ cloudflare api ¿ë curl ±âº»°ª [2] Àα⠱â¼ú·¹º§Ä¿¹Â´ÏƼ·¹º§¼ÛÈ¿Áø 15-06-22 4488