13
2025
03
21:29:36

使用代理IP

目录  

1 简介

2 使用代理IP

3 查看本机IP

4 测试代理可用性

4.1 HTTP代理

4.2 SOCKS代理

5 PHP使用代理

6 隧道代理

6.1 PHP使用隧道代理

6.2 PHP的Guzzle库使用代理

7 注意事项

7.1 访问https网站请设置IP白名单


简介

某些情况下需要更换IP才能访问指定的应用,例如爬取网页时,如果你没有使用代理IP,那么你的IP一旦被对方服务器封禁,那么你就无法再爬取对方的资源了。

使用代理IP

我这里使用的是快代理的服务。购买了一天的独享IP来测试。

例如118.24.219.151:16816就是购买的代理IP

b3b130252359028bd379fb6d76aac96c_d0636487936d524b449004da50fc83a1.png

查看本机IP

浏览器访问如下地址:

https://api.ip.sb/ip

curl ip.sb

也可以使用快代理提供的网址:

https://dev.kdlapi.com/testproxy

测试代理可用性

HTTP代理


  1. #带上用户名密码

  2. curl -v "https://dev.kdlapi.com/testproxy" -x username:password@118.24.219.151:16816

  3. #直接添加Proxy-Authorization

  4. curl -v -H "Proxy-Authorization: Basic bXl1c2VybmFtZTpteXBhc3N3b3Jk" "https://dev.kdlapi.com/testproxy" -x 118.24.219.151:16816


723c77bd86c5284412af2403566e4d0e_3761060c1561fabe1e0a444f86699229.png

bXl1c2VybmFtZTpteXBhc3N3b3Jk是用户名和密码通过:拼接后进行base64编码而成。
例如您的用户名是username,密码是password,用如下PHP脚本即可生成base64验证串:

echo base64_encode('username:password');

SOCKS代理

#带上用户名密码
curl -v "https://dev.kdlapi.com/testproxy" --socks5 username:password@118.24.219.151:16816

也可以使用谷歌浏览器的“SwitchyOmega”插件来测试:

b191843542e73e61ef8896e8f0fcb13d_cf3080b2376949b52bfabcb61fe54f50.png

PHP使用代理


  1. <?php

  2. $url = 'https://dev.kdlapi.com/testproxy';

  3. $header[] = 'Proxy-Authorization: Basic bXl1c2VybmFtZTpteXBhc3N3b3Jk';

  4. $data = curlGet($url,$header,'118.24.219.151',16816);

  5. var_dump($data);die;

  6. function curlGet($url = '', $header=[],$proxy='',$proxyPort='')

  7. {

  8.    $ch = curl_init($url);

  9.    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  10.    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

  11.    if($header){

  12.        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

  13.    }

  14.    curl_setopt($ch, CURLOPT_PROXY, $proxy);

  15.    curl_setopt($ch, CURLOPT_PROXYPORT, $proxyPort);

  16.    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

  17.    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

  18.    $data = curl_exec($ch);

  19.    if($data === false)

  20.    {

  21.        echo 'Curl error: ' . curl_error($ch);die;

  22.    }

  23.    curl_close($ch);

  24.    return $data;

  25. }


隧道代理

用户无须更换IP,隧道代理会将用户发送的请求转发到不同的代理IP。
使用隧道代理,开发者无需维护IP池,极大简化了编程的复杂度。
可以设置每次请求更换代理。

PHP使用隧道代理

代码中的xxx.xxxx.com就是代理的IP,10086就是代理的端口。

  1. $url = 'https://api.ip.sb/ip';

  2. $header[] = 'Proxy-Authorization: Basic bXl1c2VybmFtZTpteXBhc3N3b3Jk';

  3. $data = curlGet($url,$header,'xxx.xxxx.com',10086);

  4. var_dump($data);die;

  5. function curlGet($url = '', $header=[],$proxy='',$proxyPort='')

  6. {

  7.    $ch = curl_init($url);

  8.    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  9.    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

  10.    if($header){

  11.        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

  12.    }

  13.    curl_setopt($ch, CURLOPT_PROXY, $proxy);

  14.    curl_setopt($ch, CURLOPT_PROXYPORT, $proxyPort);

  15.    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

  16.    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

  17.    $data = curl_exec($ch);

  18.    if($data === false)

  19.    {

  20.        echo 'Curl error: ' . curl_error($ch);die;

  21.    }

  22.    curl_close($ch);

  23.    return $data;

  24. }

575d16cb3572b6344e1531347f45509e_765f7de334f478574a2804c53e383970.png

PHP的Guzzle库使用代理

$client = new Client([         
   'timeout'  => 1,          
     'verify'=>false,          
       'proxy' => '代理IP:代理端口'
       ]);

注意事项

访问https网站请设置IP白名单

curl(版本>7.30)在发起CONNECT请求时并不会在header里带上Proxy-Authorization,即便做了-H “Proxy-Authorization: Basic …或-x username:password@122.96.59.105:23068,这会导致代理服务器找不到Proxy-Authorization来验证身份,于是返回407错误
查看curl版本:curl --version
请在设置IP白名单后再做对https网页的测试

image.png




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://sg.hqyman.cn/post/9581.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: