手把手教你用PowerShell挂代理上网
搞编程的兄弟都知道,用PowerShell做网络请求是家常便饭。但遇到网站限制IP访问的时候,整个人都抓瞎了不是?今天咱就唠唠怎么给Invoke-WebRequest这个命令穿个”隐身衣”,用代理IP把活儿给办了。
代理IP是啥玩意儿?
简单说就是找个中间人帮你传话。比如你要访问某网站,先让代理服务器去联系,网站看到的IP是代理的,跟你半毛钱关系没有。这样既能保护隐私,又能突破单IP的访问限制。
举个栗子:假设你要测试某个接口的并发能力,用自己的IP连续狂刷,分分钟被拉黑。这时候要是手头有几十个代理IP轮着用,这事儿就成了。
PowerShell设置代理三步走
重点来了!用Invoke-WebRequest挂代理其实特简单,记住这个万能公式:
$proxy = "http://账号:密码@ip地址:端口"
Invoke-WebRequest -Uri "目标网址" -Proxy $proxy -ProxyUseDefaultCredentials
说几个容易栽跟头的地方:
1. 代理地址格式必须带http://,很多人直接写IP:端口,结果死活连不上
2. 需要账号密码的代理,记得用冒号分隔账号密码,比如user123:pass456
3. 用ipipgo的动态代理时,建议每次请求都换新IP,避免被目标网站察觉
实战案例演示
假设现在要用ipipgo的代理采集数据,具体怎么操作?看好了:
从ipipgo获取的代理信息
$ipipgo_proxy = "http://vipuser:28dxz9@gateway.ipipgo.com:9020"
带超时设置的请求
$response = Invoke-WebRequest -Uri "https://target-site.com/data" `
-Proxy $ipipgo_proxy `
-TimeoutSec 30 `
-UserAgent "Mozilla/5.0"
处理返回结果
$content = $response.Content
注意用反引号`来换行写命令,这样代码看着清爽。如果遇到证书问题,可以加个-SkipCertificateCheck
参数,不过得PS 7.0以上版本才支持。
常见问题QA
Q:代理设置对了为啥还连不上?
A:八成是IP被封了,赶紧去ipipgo后台换个新IP。他们的IP池每5分钟自动更新,建议用短效代理套餐。
Q:需要同时用多个代理怎么办?
A:把代理地址存成数组,每次随机选一个:
$ipipgo_pool = @("ip1:port","ip2:port","ip3:port")
$random_proxy = Get-Random -InputObject $ipipgo_pool
Q:返回速度特别慢咋整?
A:可能是线路拥堵,在ipipgo控制台切换下机房节点。优先选BGP混合线路,自动选最优路径。
为啥推荐ipipgo?
自家用出来的经验:
• 独享IP池,和那些公共代理不掺和
• 支持HTTP/HTTPS/Socks5三种协议
• 每个IP最长存活时间精确到秒
• 24小时技术客服,上次半夜两点提工单居然秒回
最后说个骚操作:把代理设置写成函数,放到$PROFILE
里,以后每次开PowerShell都能直接用。需要代码的兄弟去ipipgo官网找客服要示例脚本,报我名字打…咳,其实报不报都一样,他们家价格本来就实在。