programing

프록시를 통해 CURL을 사용하는 방법

copyandpastes 2023. 2. 1. 22:15
반응형

프록시를 통해 CURL을 사용하는 방법

프록시 서버를 사용하기 위해 curl을 설정하려고 합니다.URL은 html 형식으로 제공되므로 문제가 되지 않습니다.프록시가 없어도 정상적으로 동작합니다.이 사이트나 다른 사이트에서 코드를 찾았지만 동작하지 않습니다.올바른 해결책을 찾는 데 도움을 주시면 감사하겠습니다.벨로우는 가깝지만 뭔가 부족한 것 같아요.감사해요.

여기 http://www.webmasterworld.com/forum88/10572.htm에서 수정한 벨로우 코드는 12행에서 누락된 T_VARILE에 대한 오류 메시지를 반환합니다.

<?

$url = '$_POST[1]';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1)
curl_exec ($ch); 
$curl_info = curl_getinfo($ch);
curl_close($ch);
echo '<br />';
print_r($curl_info);
?>

아래는 컬부터 프록시까지 콘텐츠를 반환하지 않습니다.

<?

$proxy = "66.96.200.39:80";
$proxy = explode(':', $proxy);
$url = "$_POST[1]";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy[0]);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy[1]);
curl_setopt($ch, CURLOPT_HEADER, 1);

$exec = curl_exec($ch);

echo curl_error($ch);
print_r(curl_getinfo($ch));
echo $exec;
?>

는 현재 pelican-cement.com에서 동작하고 있지만 동작하지 않습니다.

업데이트: 도움을 주셔서 감사합니다.상기의 변경을 실시했습니다.이제 빈 화면만 반환됩니다.

<?

$url = $_POST['1'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_exec ($ch); 
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

echo $curl_scraped_page;
?> 

다음은 버그가 제거된 작동 버전입니다.

$url = 'http://dynupdate.no-ip.com/ip.php';
$proxy = '127.0.0.1:8888';
//$proxyauth = 'user:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

echo $curl_scraped_page;

추가했습니다.CURLOPT_PROXYUSERPWD사용자 이름과 비밀번호가 필요한 프록시가 있는 경우.세팅했습니다.CURLOPT_RETURNTRANSFER데이터를 1로 되돌리기 위해$curl_scraped_page변수.

두 번째 여분을 제거했어curl_exec($ch);변수가 반환되는 것을 막을 수 있습니다.당신의 프록시 IP와 포트를 하나의 설정으로 통합했습니다.

저도 제거했습니다.CURLOPT_HTTPPROXYTUNNEL그리고.CURLOPT_CUSTOMREQUEST디폴트이기 때문에

헤더를 반환하지 않으려면 코멘트 아웃CURLOPT_HEADER.

프록시를 비활성화하려면 프록시를 null로 설정하십시오.

curl_setopt($ch, CURLOPT_PROXY, null);

질문이 있으시면 언제든지 문의해 주십시오.cURL매일매일.

CURL PROXY에 필요한 다양한 CURL 옵션 사용에 대해 설명했습니다.

$url = 'http://dynupdate.no-ip.com/ip.php';
$proxy = '127.0.0.1:8888';
$proxyauth = 'user:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);         // URL for CURL call
curl_setopt($ch, CURLOPT_PROXY, $proxy);     // PROXY details with port
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);   // Use if proxy have username and password
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); // If expected to call with specific PROXY type
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  // If url has redirects then go to the final redirected URL.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);  // Do not outputting it out directly on screen.
curl_setopt($ch, CURLOPT_HEADER, 1);   // If you want Header information of response else make 0
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

echo $curl_scraped_page;
root@APPLICATOSERVER:/var/www/html#ph 연결 테스트.php61e23468-949e-4103-8e08-9db09249e8s1 OpenSSL_connect: 10.172.123.1:80 root@에 대한 SSL_ERROR_SYSCALLAPPLATIOSERVER: /var/www/html#

php 스크립트 파일의 문제에서 프록시 설정을 선언한 게시물이 수정되었습니다.

$120 = '10.120.123.1:80';curl_setopt($cSession, CURLOPT_PROXY, $PROXY), // 포트 포함 프록시 상세

상세한 자기 설명 코멘트와 함께 프로젝트에 사용한 잘 테스트된 기능이 있습니다.


80 이외의 포트가 서버 방화벽에 의해 차단되는 경우가 많기 때문에 코드가 localhost에서는 정상적으로 동작하지만 서버에서는 동작하지 않는 것처럼 보입니다.

function get_page($url){

global $proxy;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_HEADER, 0); // return headers 0 no 1 yes
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // return page 1:yes
curl_setopt($ch, CURLOPT_TIMEOUT, 200); // http request timeout 20 seconds
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Follow redirects, need this if the url changes
curl_setopt($ch, CURLOPT_MAXREDIRS, 2); //if http server gives redirection responce
curl_setopt($ch, CURLOPT_USERAGENT,
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); // cookies storage / here the changes have been made
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // false for https
curl_setopt($ch, CURLOPT_ENCODING, "gzip"); // the page encoding

$data = curl_exec($ch); // execute the http request
curl_close($ch); // close the connection
return $data;
}

언급URL : https://stackoverflow.com/questions/5211887/how-to-use-curl-via-a-proxy

반응형