curl 유료프록시 적용에 대해 문의합니다.
본문
안녕하세요. 몇날 몇일을 프록시을 적용한 파싱프로그램 개발 중 무료프록시는 잘 되는데 실제로 사용할 유료 프록시에 접근하려 하니 안되네요..ㅠㅠ아래는 현재 제가 만들어서 사용하고 있는 curl 함수입니다.
function CURL_FUNC($DATA)
{
if (!$DATA['agent'])
$DATA['agent'] = 'mozilla/5.0 (compatible; msie 9.0; windows nt 6.1; trident/5.0)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $DATA['url']);
curl_setopt($ch, CURLOPT_HEADER, $DATA['header']);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, $DATA['agent']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
@curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
if ($DATA['protocol'] == 'https')
{
if (!$DATA['sslver'])
$DATA['sslver'] = 3;
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSLVERSION, $DATA['sslver']);
}
if ($DATA['cookiem'])
curl_setopt($ch, CURLOPT_COOKIEJAR, $DATA['cookie']);
if ($DATA['cookieu'])
curl_setopt($ch, CURLOPT_COOKIEFILE, $DATA['cookie']);
if(!empty($DATA['data'])){
$_post_data = @http_build_query($DATA['data'], '', '&');
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_post_data);
}
if(!empty($DATA['referer'])){
curl_setopt($ch, CURLOPT_REFERER, $DATA['referer']);
}
if (!empty($DATA['proxyip']))
{
$proxy_ext = explode('|', $DATA['proxyip']);
if (!empty($proxy_ext[0]))
{
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); //TRUE를 설정하면 지정된 HTTP 프록시를 사용함.
//curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); //CURLPROXY_HTTP(기본값) or CURLPROXY_SOCKS5 로 지정할 수 있음.
//curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC); //옵션은 CURLAUTH_BASIC 및 CURLAUTH_NTLM 으로 지정 할 수 있음.
curl_setopt($ch, CURLOPT_PROXY, $proxy_ext[0]);
//curl_setopt($ch, CURLOPT_PROXYPORT, '포트번호'); 프록시 연결 포트번호를 지정. 이 포트번호는 CURLOPT_PROXY로 지정할 수 있음.
}
if (!empty($proxy_ext[1])) // 유료프록시 사용시에 필요함.
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_ext[1]);
}
$result = curl_exec($ch);
$error_no = curl_errno($ch); //에러정보 출력
$error_msg = curl_error($ch); //에러정보 출력
curl_close($ch);
if ($DATA['errorchk'] && $error_no)
return '에러번호 : ' . $error_no . ' / 에러메세지 : ' . $error_msg;
else if ($error_no)
return $error_no;
else
{
if ($DATA['charset'] == 'euc-kr')
$result = iconv_utf8($result);
return $result;
}
}
이것으로 위에서 얘기드린 것처럼 무료프록시는 잘 적용이 됩니다.
그런데 유료프록시를 적용하면
에러번호 : 56 / 에러메세지 : received http code 503 from proxy after connect 에러가 발생을 합니다.
프록시 관련 옵션을 이렇게도 바꿔보고 저렇게도 바꿔보는데 안되네요. ㅠㅠ
구글이나 기타 매체에서 검색을 통해 자료를 찾아 봤지만 자료가 많지가 않네요..ㅡㅡ''
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_ext[1]);
$proxy_ext[1] 는 아이디:비밀번호로 해서 들어갑니다.
해당 계정은 유료프록시 사이트 회원가입한 아이디와 비밀번호를 넣었습니다.
이 부분에 대해 아시거나 도움 주시 수 있는 분들의 조언이 간절합니다.
!-->
답변을 작성하시기 전에 로그인 해주세요.