我有这么一个需求:

 一个域名,xxx.com,它后面其实有很多个iP:比如:

1.2.3.4,
5.6.7.8,
9.10.11.12
这些ip上面都有同样的网站,域名解析的时候会随机分配一个ip给你(这个就是DNS负载均衡)。

但是现在假如我想访问一个特定IP的上的网站,比如5.6.7.8上的网站,但是由于网站限制了必须通过域名才能访问,直接把域名改成ip地址形成的url如:http://5.6.7.8/,这样子是不行的。
怎么办呢?

有两种方法:

  1. 修改Hosts文件,指定xxx.com 解析到5.6.7.8 上面去。
  2. 使用http://5.6.7.8/这个url,不过在请求包的head头里增加一句:

Host:xxx.com

由于我是通过C#代码来实现这个功能,所以就想通过第2种方法解决。

C#中是用HttpWebRequest类来实现获取一个http请求的。它有一个Header的属性,可以修改Header里头的值。不过查询MSDN得知,这个Host标识是没办法通过这种方法修改的。如果你这么使用:

httpWebRequest.Headers["Host"] =”xxx.com”;
它会抛出一个异常出来:

ArgumentException: The 'Host' header cannot be modified directly。
那还能不能实现上面的需求呢?答案是能,不过方法要改一下:

Url里面还是使用域名:

http://xxx.com/
设置HttpWebRequest的Proxy属性为你想访问的IP地址即可,如下:

httpWebRequest.Proxy = new WebProxy(ip.ToString());

参考代码如下(代码来自参考资料一):

using System;
using System.IO;
using System.Net;

namespace ConsoleApplication1
{

class Program
{public static void Main(string[] args){HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.example.com/Default.aspx");System.Net.WebProxy proxy = new WebProxy("208.77.186.166", 80);request.Proxy = proxy;using (WebResponse response = request.GetResponse()){using (TextReader reader = new StreamReader(response.GetResponseStream())){string line;while ((line = reader.ReadLine()) != null)Console.WriteLine(line);}}}
}

}

这样子就实现了指定IP的域名请求。

附:有人已经向微软反馈了无法修改host头的问题,微软反馈说下一个.Net Framewok中将增加一个新的Host属性,这样子就可以修改Host头了。

原文:

由 Microsoft 在 2009/5/26 13:37 发送
The next release of the .NET Framework will include a new "Host" property. The value of this property will be sent as "Host" header in the HTTP request.

参考资料:

HttpWebRequest.Headers["Host"] throws an unexpected exception

c#中HttpWebRequest使用Proxy实现指定IP的域名请求相关推荐

  1. Python request请求指定ip的域名

    python3: import requestsrequests.get('https://192.168.100.6',headers={'Host':'test.com'},verify=Fals ...

  2. php 屏蔽curl访问,php curl指定ip,php curl请求忽略本地host文件,php curl请求跳过本地host文件...

    假如我们使用curl请求一个网站,如果这个网站域名在本地host中也存在,curl默认会请求本地,但是我们可以自己设置解析到哪个ip. (1).设置朋友的博客网站主机和ip,请求测试正确返回远程网站内 ...

  3. 如何在金仓数据库KingbaseES中指定IP登录

    关键字 KingbaseES,指定IP 问题描述 如何在金仓数据库KingbaseES中指定IP登录? 解决方案 1. 修改data目录下sys_hba.conf文件 2. 进行IP修改,重启服务,在 ...

  4. Mysql中怎样设置指定ip远程访问连接

    场景 Mysql安装在远程的Windows 服务器上,需要配置使指定的ip可以访问. 如果没有提前配置指定ip,那么在访问时就会提示: 注: 博客: https://blog.csdn.net/bad ...

  5. C#中HttpWebRequest、WebClient、HttpClient 、HttpClientFactory Flurl、的使用总结

    C#中HttpWebRequest.WebClient.HttpClient .HttpClientFactory. Flurl的使用总结 三者的区别 HttpWebRequest 命名空间: Sys ...

  6. Python中使用中文正则表达式匹配指定的中文字符串

    业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发 ...

  7. QEMU-KVM自己主动创建虚拟机,以指定IP构造

    正在使用qemu不能指定创建虚拟机的过程IP住址,然而,在实际应用中,我们需要有一台虚拟机IP住址,不是人为的虚拟机操作系统配置. 于qemu虚拟机技术文档(http://qemu.weilnetz. ...

  8. 只允许指定IP远程桌面连接_使用IP安全策略

    一,新建IP安全策略 WIN+R打开运行对话框,输入gpedit.msc进入组策略编辑器. 依次打开"本地计算机"策略--计算机配置--Windows设置--安全设置--IP安全策 ...

  9. php 根据ip 扫描端口,python实现指定ip端口扫描方式

    在Linux中判断一台主机是否可达,可以使用ping命令,而判断端口是否打开,可以使用telnet命令,但是telnet命令没有超时时间的参数,使用起来不是很方便,那么可以利用Python来完成一个端 ...

  10. windows服务器指定IP地址才能进行远程访问桌面设置方法

    这篇文章主要介绍了windows服务器指定IP地址才能进行远程访问桌面设置方法,需要的朋友可以参考下 一般情况下分两种方法: 第一种是通过 防火墙来实现 等保测评要求:对服务器限制远程终端登录地址 于 ...

最新文章

  1. 好东西+php,推荐个好东西swoole,php如虎添翼
  2. 【100题】 第四十七题 序列的最长递增、递减序列
  3. Netlog 的数据库及 LAMP 架构
  4. python游戏-零基础python教程-用Python设计你的第一个小游戏
  5. Eclipse上搭建SSH(struts-2.2.3 + spring-2.5.6 + hibernate-3.6.8)框架-附源码
  6. Transformer 在美团搜索排序中的实践
  7. Interview:算法岗位面试—10.10下午—上海某银行算法岗位(偏数据分析,四大行之一)的技术面—关于项目的考察
  8. AIProCon在线大会笔记之阿里达摩院司罗:为商业搭建语言桥梁
  9. mysql into_MYSQL中replace into的用法
  10. django 轮播图上传_django之动态轮播图技术的实现
  11. 【OpenCV 例程200篇】84. 由低通滤波器得到高通滤波器
  12. post的4个参数和ajaxReturn方法
  13. VIM查看空格,换行,TAB键
  14. 【MySQL学习】Unknown column 'PASSWORD'|Access denied for user 'root'@'localhost'
  15. 6.支付平台架构:业务、规划、设计与实现 --- 安全与风控
  16. VMware View虚拟桌面在安卓平板电脑上的演示
  17. Spring DeferredResult 实现长轮询
  18. 微信小程序云函数 -- 腾讯云通用印刷体识别应用
  19. wordpress主题_20种色彩缤纷的WordPress主题组合(免费和高级)
  20. 政府行政管理思维与互联网思维

热门文章

  1. 项目管理网络图概念总结
  2. 第14章-cpp代码重用(其他继承模板)
  3. 有哪些有用的人际交往小常识?
  4. Linux环境批量下载阿里云盘资源
  5. 教你如何在交换机上查询并看懂光模块DDM信息
  6. 电子取证-----仿真技术
  7. Centos网络管理(三)-网络配置相关
  8. vue 统计中英文字符串长度_Ant Design Vue实现区分中英文分全角/半角字符长度校验功能...
  9. 初生牛犊不怕虎 造车新势力的硬核移动互联科技盘点
  10. python字典第一个元素_如何获取python字典中的第一个值