php抓取网页域名(私有云的IP,如上图箭头所于成功了吗?(组图) )

优采云 发布时间: 2022-01-13 07:06

  php抓取网页域名(私有云的IP,如上图箭头所于成功了吗?(组图)

)

  在最近承接的一个项目中,需要使用公有云阿里云的域名将甲方的内网(私有云)与curl连接起来,检索用户积分等相关数据。方案*敏*感*词*如下,公有云和私有云之间通过专线连接。

  

  问题:是私有云中的域名。解析的IP地址无法从外网访问。BUT被解析为外网可访问的IP,所以curl傻傻的连接到这个IP。

  要求:curl("") -- 网络包发往 --> 私有云的IP,如上图中箭头所示。

  预期的解决方案:指定 curl 的 dst 主机 ip addr

  实践一:静态路由

  更改 /etc/hosts 并添加记录

  10.23.xx.xx

  考虑到未来服务器数量的横向扩展,运维人员需要做代码部署以外的工作,很容易让人忘记这些步骤而不采用。

  实践二:PHP手册

  在当前的PHP curl手册中,只能找到下图中的选项来实现相同的功能,但是需要PHP7,项目中使用的是PHP5.6。经过

  

  练习三:思考

  1)我记得终端下的curl命令有一个--resolve选项指定目标的IP

  

  2)记得PHP接口的底层代码和C语言代码差不多,找了/usr/include/curl/curl.h文件,找到了,

  

  从这个 C 语言的宏中,与 --resolve 对应的选项常量的名称是 CURLOPT_RESOLVE。我搜索了PHP curl文档,但没有看到这个常量的定义。

  仍然考虑到PHP接口的底层代码与C语言代码几乎相同,推测这个常量在PHP中具有相同的值。PHP文档虽然没有写,但是应该可以直接传入这个常识的值。

  编写如下实验代码,测试一下,成功了。

  

  问题解决了~

  ----------------------------------------- 添加另一个方法-------- ----------------------------------

  

  该方法将 url scheme 中的 hostname 部分替换为目标 IP 地址,然后在 http header 中指定 Host。

  为什么这种方法有效?把它留给聪明的你来锻炼你的思维。

  回答Tips:考虑一下你在Apache/Nginx中是如何配置虚拟主机的,Host部分起什么作用呢?

  但是,是的,它是大写的,这种方法对于 HTTP 只会 100% 成功,但对于 HTTPS

  

  嗯,和证书签名里的主机名不匹配,太没良心了,太安全了 -->

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线