【发布时间】:2013-07-27 03:53:24
【问题描述】:
有没有办法通过 OpenVPN 或 PPTP 等 VPN 执行 cURL 请求?
我知道我可以使用代理,但 VPN 不同。
【问题讨论】:
-
我认为 cURL 在高于 openvpn 或 PPTP 的 OSI 级别中“有效”。
有没有办法通过 OpenVPN 或 PPTP 等 VPN 执行 cURL 请求?
我知道我可以使用代理,但 VPN 不同。
【问题讨论】:
编辑:2013 年 7 月
我收到了几封电子邮件,因此我将其全部打包成一篇博文: http://www.georgiecasey.com/2013/07/26/how-to-use-overplay-and-other-vpns-as-a-curl-proxy/
是的,但首先您必须在单独的界面上设置 VPN,这样您的整个服务器就不会使用 VPN。我不是 OpenVPN 专家,但我使用 dev 开关来指定 TUN/TAP 虚拟网络设备:dev proxy1。有关 OpenVPN 手册页的更多信息。
然后在你的脚本中使用这行 PHP 代码。
curl_setopt($ch, CURLOPT_INTERFACE, "proxy1");
我这样做是为了可以使用 overplay.net 的所有 IP 在我的服务器上抓取内容。这些 IP 经常更改,所以我有一个 cronjob 来提取 IP 的 zip 文件,为每个 IP 创建一个 OpenVPN 配置文件,启动每个 VPN 并将所有 IP 和接口名称放在数据库表中。然后我的脚本只是从数据库中提取随机接口名称并在 curl 中使用它。辛苦了。
【讨论】:
cURL 仅使用操作系统的网络堆栈,本身不实现 TCP(或更低级别的协议)。
因此,当操作系统配置为通过虚拟适配器路由网络通信时,无论该适配器如何实现,它都能正常工作。
【讨论】:
-x arg