我想通过代理使用php套接字。我使用以下代码进行套接字创建
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, some_ip, 443);
通过以下方式设置代理:
$aContext = array(
'http' => array(
'proxy' => 'tcp://191.96.x.xx:1212',
),
);
stream_context_set_default($aContext);
但是当我使用跟踪路由测试它时,它不会通过代理。 Traceroute - https://www.adayinthelifeof.nl/2010/07/30/creating-a-traceroute-program-in-php/
此外,我尝试使用环境变量http_proxy=http://proxy.example.com:8080
,但id不通过代理
答案 0 :(得分:1)
stream_context_set_default
设置文件操作的默认上下文(例如fopen
,file_get_contents
),但您正在尝试执行 <{1}}等的socket 操作 - 两者非常不同。
如果您只想通过代理服务器通过HTTP下载文件,请在设置默认上下文以使用代理后使用socket_create
之类的内容。
如果您需要使用原始套接字,可以使用$data = file_get_contents("http://example.com/file");
等,但是您需要提供有关您正在使用的代理类型以及您希望使用套接字实现的内容的更多详细信息。 / p>