프록시를 통해 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
'programing' 카테고리의 다른 글
JPA를 사용한 맵 저장 (0) | 2023.02.01 |
---|---|
VueJs, ReferenceError: google이 정의되지 않았습니다. (0) | 2023.02.01 |
"else"가 없는 JavaScript의 3진 연산자 (0) | 2023.02.01 |
Java에서 String 클래스가 final로 선언된 이유는 무엇입니까? (0) | 2023.01.22 |
매우 기본적인 MySQL 코드가 작동하지 않습니다. (0) | 2023.01.22 |