【问题标题】:Block DNS Lookup on Curl (PHP)在 Curl (PHP) 上阻止 DNS 查找
【发布时间】:2015-05-12 17:00:21
【问题描述】:

如何阻止 Curl 上的 DNS 查找?

所以,我认为有两种选择,有:

  1. 使用 HTTP(或其他类型?)代理。但是,DNS Loockup 将由 Proxy 或“原始”服务器进行?

示例: curl_setopt($ch, CURLOPT_PROXY, '0.0.0.');

  1. 为域设置默认 DNS。在 Windows se 中有一个“ETC/HOSTS”文件,但它在 Centos 上的什么位置?如何在 CURL 中设置此默认值?因为 CURL 会继续尝试查找 DNS。

这行得通吗?

谢谢大家。 :)

【问题讨论】:

  • http 与 dns 几乎没有关系,除了 http 使用 dns 来解析 hostname->ip,就像网络上的几乎所有其他东西一样。如果您不想执行 dns 查找,请不要使用主机名:仅使用 IP。
  • 但直接 IP 不适用于 CURL。我试试看。 ://
  • 可能是因为您尝试访问的站点是名称托管的,这需要 Host: 标头,例如curl 到 IP,但在请求标头中强制 Host: example.com
  • 在 CentOS 中,它实际上位于 etc/hosts。如 /etc/hosts ...

标签: php curl dns


【解决方案1】:

如果您试图将请求强制发送到与 DNS 指定的服务器不同的服务器,那么您可以使用/etc/hostsC:\Windows\System32\drivers\etc\hosts您可以完全通过 cURL 手动设置主机头来完成。

$hostname = 'www.mydomain.com';
$ip = '1.2.3.4';
$proto = 'http';
$request = '/foo/bar/index.php';

$url = sprintf('%s://%s%s', $proto, $ip, $request); // http://1.2.3.4/foo/bar/index.php

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Host: '.$hostname]);
curl_exec($ch);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 2011-04-10
    • 2015-09-05
    相关资源
    最近更新 更多