Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   curl и socks (https://forum.antichat.xyz/showthread.php?t=81084)

GreenBear 16.08.2008 05:40

curl и socks
 
привет, никогда раньше не работал с курл, где приходилось использовать socks4/5.
теперь возникла такая необходимость,
короче мои действия такие:
PHP код:

        curl_setopt($chCURLOPT_FOLLOWLOCATION1);
    
curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1');
    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
    
curl_setopt($chCURLOPT_TIMEOUT30); 
    
curl_setopt($chCURLOPT_URL$url);
    
curl_setopt($chCURLOPT_HEADER1);
    if(
$proxy){
        
$pr $proxy_list[array_rand($proxy_list)];
        
$pr $pr['ip'].":".$pr['port'];
        
curl_setopt($chCURLOPT_PROXY$pr);
        switch(
$input['proxytype']){
            case 
's5':
                
curl_setopt($chCURLOPT_PROXYTYPECURLPROXY_SOCKS5);
                break;
            case 
's4':
                
curl_setopt($chCURLOPT_PROXYTYPECURLPROXY_SOCKS4); 
                break;
        }
        
    } 

$input['proxytype'] и s4 и s5, не работают с ними.
курл отвечает: Empty reply from server.
если использовать обычные http прокси, то работает отлично.

вот нужно решить проблему, почему не работает с соксами :( в сети по этому поводу молчек или гугле мой враг :(

version:
PHP код:

    [version_number] => 463360
    
[age] => 3
    
[features] => 1597
    
[ssl_version_number] => 0
    
[version] => 7.18.0
    
[host] => i486-pc-linux-gnu
    
[ssl_version] => OpenSSL/0.9.8g
    
[libz_version] => 1.2.3.3
    
[protocols] => Array
        (
            [
0] => tftp
            
[1] => ftp
            
[2] => telnet
            
[3] => dict
            
[4] => ldap
            
[5] => ldaps
            
[6] => http
            
[7] => file
            
[8] => https
            
[9] => ftps
        
)




Shadow_p1raT 16.08.2008 07:41

глянь тут:
http://www.armadaboard.com/topic14676.html

GreenBear 16.08.2008 07:57

и чего - там ничего нового.

Chaak 16.08.2008 12:45

Проверь рабочие ли прокси и не требуют ли пароля. Если с паролем то:
PHP код:

curl_setopt($curlCURLOPT_PROXYUSERPWD,' username:pass'); 


BlackSun 16.08.2008 13:01

Судя по гуглу, cUrl как то глючно с носками работает, видимо тока по выходным) с Socks5 заставил работать, Socks4 отказывается переваривать ..

ЗЫ: curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE);

PHP код:

<?
    $ch 
curl_init();
    
curl_setopt($chCURLOPT_URL"http://xakep.ru");
    
curl_setopt($chCURLOPT_TIMEOUT60);
    
curl_setopt($chCURLOPT_PROXY"97.84.1.138:51411");
    
curl_setopt($chCURLOPT_PROXYTYPECURLPROXY_SOCKS5);
    
curl_setopt($chCURLOPT_RETURNTRANSFERFALSE);
    
$result curl_exec($ch);
    echo 
$result;
    
curl_close($ch);
?>

При попытке проюзать Socks4 вываливает -
Notice: Use of undefined constant CURLPROXY_SOCKS4 - assumed ‘CURLPROXY_SOCKS4′

disc 20.08.2008 02:17

Curlopt_proxytype может принимать только 2 параметра Curlproxy_http (по-дефолту) либо Curlproxy_socks5

presidentua 20.08.2008 22:10

всю жизнь использую такую когда-то оч. давно написаную функцию, пока ниразу не подводила -
PHP код:

function get_contents($url,$post=''){
    global 
$proxy,$proxy_type;
    
$url=str_replace(' ','+',$url);
    
$ch curl_init();
    if (
$proxy!=='')
    {
        if (
$proxy_type == 'socks'curl_setopt($chCURLOPT_PROXYTYPECURLPROXY_SOCKS5);
        
curl_setopt($chCURLOPT_HTTPPROXYTUNNEL1);
        
curl_setopt($chCURLOPT_PROXY$proxy);
    }
    if (
$post!=='')
    {
    
curl_setopt($ch,CURLOPT_POST,TRUE);
    
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
    }
    
curl_setopt($chCURLOPT_URL$url);
    
curl_setopt($chCURLOPT_HEADERTRUE);
    
curl_setopt($chCURLOPT_NOBODYFALSE);
    
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_USERAGENT"MSIE 7.0");
    
curl_setopt($chCURLOPT_TIMEOUT,30);
    
$result curl_exec($ch);
    if (
curl_errno($ch)!==0
    {
        
$er=curl_error($ch);
        
eecho("Error load page = $url ($er)");
        
$result=false;
    };
    
curl_close($ch);
    return 
$result;




Время: 04:43