昨天提问,碰一鼻子灰,现在真心重新求教:不依靠后端,浏览器端能不能抓其他网站的内容?

2017-03-19 18:35:45 +08:00
 wanttte
昨天的问题链接: https://www.v2ex.com/t/34852

可以不看昨天的问题链接,问题重新描述如下:
A 网站有 api ,但不支持跨域。 B 网站想在浏览器端,调用这个 api ,在不靠后端支持的情况下,如何能做到?

为什么会问这个问题:
最近 google 的 pwa 很火, google 号称要给予 native 同等的地位,很多人说这将颠覆 native 等等,于是就有了这个问题。

如果是写 native 应用当然没有跨域问题,用 request 想抓什么就抓什么。
但如果现在写一个 pwa 应用,就是 android 的 chrome 浏览器可以把应用放到手机桌面的,像原生应用那样有个图标。那么这个 web 应用就很受限制了,比如我想写个爬虫之类的, native 可以做得到,但 web 做不到,没法跨域。
4534 次点击
所在节点    问与答
49 条回复
bianhua
2017-03-19 18:40:36 +08:00
Off-topic:
楼主你发帖能检查一下么?

刚我还在思考 HTML5 vs Native 的问题,现在我在超市买樱桃。
loading
2017-03-19 18:47:05 +08:00
用 frame 算不算?
如果被抓网站用了措施,就不好办。


建议楼主多读书,慢慢来,一口吃不成胖子的。
yimity
2017-03-19 20:37:09 +08:00
不一定做不到,楼主你把 A 站的情况再说详细点。
wanttte
2017-03-19 21:07:04 +08:00
@bianhua 不好意思,旧贴链接修改好了: https://www.v2ex.com/t/348520
wanttte
2017-03-19 21:10:14 +08:00
@loading 不考虑被抓特殊措施。比如被抓的就是一个 api : http://block.okcoin.cn/api/v1/block_height.do?block_height=404643&symbol=BTC
wanttte
2017-03-19 21:10:28 +08:00
wanttte
2017-03-19 21:10:45 +08:00
loading
2017-03-19 21:18:01 +08:00
楼主你这是面向论坛编程啊……

面向书本,面向搜索引擎编程……面向 github 编程都没人说你的。
kookxiang
2017-03-20 02:41:04 +08:00
naive 也要讲究基本法啊,不开放给你的 API 就算是 native 你也不能调啊
支持跨域就跟你 native 要写个 public 一样
wanttte
2017-03-20 07:37:27 +08:00
@kookxiang 这个 api , native 怎么不能调? web 端就不行了
wanttte
2017-03-20 07:38:53 +08:00
@loading 发那么多字嘲讽,不如仔细看下内容
jsq2627
2017-03-20 08:13:52 +08:00
答案是不行。否则各种跨域保护机制都成摆设了。
jsq2627
2017-03-20 08:16:55 +08:00
如果是在浏览器环境下那就无解了。但是如果是构建 hybrid app ,那么有很多解决方案,比如直接在设备上运行一个 proxy 做代理。
wanttte
2017-03-20 08:23:19 +08:00
@jsq2627 所以我的意思就是, google 推出了 pwa 这种东西,就是要把一个 web 页面当作 native app 来对待,但由于浏览器的这种安全限制,很多事情都不能做。那以后浏览器会不会有大的变革?比如跨域问题。
dremy
2017-03-20 08:45:11 +08:00
跨域问题的话写成 chrome 插件可破
hxsf
2017-03-20 09:13:50 +08:00
@wanttte #14
如果那个 api 是个公用的 api 接口的话,那么它应该默认就是支持跨域访问的。

如果那个是一个非开放的 api 接口,那人家不想让你访问,有啥问题么?

这是一个安全的问题。

如果是你自己的,可以通过启动参数等 N 种方法,关闭 cors 。
hxsf
2017-03-20 09:14:53 +08:00
@hxsf #16 更正: 如果是你自己的,可以通过浏览器启动参数、做成插件等 N 种方法,关闭浏览器的 cors 保护。
imlonghao673
2017-03-20 09:27:22 +08:00
楼主要考虑跨域的安全性!
楼主的问题,答案可以,请于网站方联系要求设置 CORS
hst001
2017-03-20 10:49:57 +08:00
同源策略是出于安全设计的。要跨域有几种办法,一是自己加代理服务器,二是让对方用 jsonp 的方式返回或者让对方设置允许你跨域请求。

叫你多读书少抱怨不是数落你,如果你知道这些,也不用花时间到处问,这是最浪费时间的解决办法。
MinonHeart
2017-03-20 10:55:03 +08:00
页面上实现不了,像 chrome 浏览器这种,可以借助扩展来实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/348639

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX