1
CDuXZMAPgHp1q9ew 2017-07-06 11:23:35 +08:00
urlprotocol
|
2
liuminghao233 2017-07-06 11:29:52 +08:00 via iPhone
做这事情没啥意义啊
dns 请求也是发 udp 包给服务器,然后你解 reply 包,把 ip 地址拿出来。 你都知道 ip 了还解析个啥,有点莫名其妙的感觉。 |
3
honeycomb 2017-07-06 11:32:52 +08:00 via Android
使用各大厂商提供的 HTTP dns 接口。
当然也可以自己做,但可能没意义。 |
4
q409195961 OP @liuminghao233 我不是想拿到 ip 地址。我是想在发请求 xxx.com 的接口时,域名指向的 ip 地址是 127.0.0.1,而不是 DNS 服务器给的 123.0.0.1。(不可以直接通过 IP 地址请求接口)
xxx.com 域名原本是指向 127.0.0.1 的服务器,但 DNS 服务器污染后变成指向 123.0.0.1 了 |
5
paradoxs 2017-07-06 11:42:51 +08:00
让后台做转发啊, 这个部分访问你们后台提供的地址就行了.
|
6
icodesign 2017-07-06 11:45:49 +08:00
是真 `127.0.0.1` 吗.....
> 不可以直接通过 IP 地址请求接口 还有这种?最终都是 tcp 连接过去,说到底不还是 IP |
7
wizardoz 2017-07-06 11:55:55 +08:00
那为啥不直接填 IP
|
8
wizardoz 2017-07-06 11:57:52 +08:00
域名的唯一意义就是得到 IP,说不可以通过 IP 地址请求表示不能理解。
如果是 HTTP 接口的话,在请求 Header 里面设置域名就可以了。 |
9
flyingghost 2017-07-06 12:05:15 +08:00 2
“不可以直接通过 IP 地址请求接口”
说明你并没有理解 HTTP。 建立连接填 IP,header 头填 host 字段,抓包确认看看。 |
10
noli 2017-07-06 12:50:14 +08:00 via iPhone
如果已知 ip 并且 ip 在 app 生命周期里不会变,那为啥不用 ip 直连?
如果觉得 ip 可能会变,使用了域名,又担心 dns 污染,那你要解决的问题就是防止 dns 污染而不是直接指定一个 ip。 |
11
q409195961 OP @icodesign @wizardoz @flyingghost 感谢回答!
比如访问 V2,DNS 服务器会返回 101.226.196.39 这个 IP,来访问网站 ![image]( https://ooo.0o0.ooo/2017/07/06/595dc0b59b571.png) 但 V2 也有其他节点,比如我想强制让他用另一个 IP ( 61.49.62.98 )来请求。 在 PC 中,我只需修改 hosts 即可 ``` 61.49.62.98 www.v2ex.com ``` 但我想在 APP 中实现,且不修改系统的 hosts。 |
12
sampeng 2017-07-06 12:54:12 +08:00 1
楼上这么多人心都操碎了。。。我猜楼主想表达的是,真实 ip 我有办法弄到,并且我有办法知道 dns 返回 ip 不对,但我怎么直接指定 ip,但是不用换域名呢。
答案 9 楼已说,自行 google |
13
sampeng 2017-07-06 12:54:38 +08:00
@q409195961 配 header 头解决问题
|
14
blank_dlh 2017-07-06 13:00:07 +08:00 1
@q409195961 请求的时候,URL 里面用 IP,header 中加上 Host: 域名。这是常规的 HTTPDNS 的做法。
|
15
liuminghao233 2017-07-06 13:18:06 +08:00 via iPhone
自己发包选择 dns
自己解析 reply 不过按照楼主的逻辑 自己选择 dns 服务器也不能用 ip 只能用域名 如果这个域名又被污染 那岂不是无解的? |
16
a554340466 2017-07-06 13:23:47 +08:00 via iPhone
九楼的方案就是啊
|
17
sobigfish 2017-07-06 13:26:49 +08:00 1
https://github.com/mattt/NSEtcHosts
lz 是想在 app 把特定的域名解析到特定的 IP 吧 |
18
sfz97308 2017-07-06 16:20:28 +08:00 1
@sobigfish 提供的应该是 lz 想要的
楼上好多人说直接通过 IP 访问,理论上可以,但在 iOS 9 之后,App Transport Security 是禁止直接通过 IP 地址访问的,必须通过域名,除非强制设置 NSAllowsArbitraryLoads |
19
skylancer 2017-07-06 16:23:39 +08:00
喂喂.. 你们在喷卤煮不熟悉 HTTP 前,先看清人家说的是 iOS App,,,
|