CEO 发现到企业微信上发任意 http url 能够以卡片的形式显示。 卡片会展示该 url 的 icon 、title 、description 、keywords 几个信息。 CEO 觉得这个功能很棒,想在公司自研 IM 上也达到类似效果。
自研 IM 挂在我的直属 TL 名下。 CEO 将想法丢在公司大群里,说企业微信的功能很方便,问能不能做。 TL 马上答应下来,他跟 CEO 差了几级,平时根本说不上话。
TL 在找人开发时卡住了,没人愿意接这个需求。 原因是这需求要爬任意 url ,有风险,可能不合规。 TL 问了法务,法务给的答复也模棱两可,法务让技术测判断。 但是 TL 已经答应了 CEO ,再反悔,会留下不良印象。 TL 在公司表现不错,也很年轻,不希望在 CEO 面前丢分。
在实在找不到人的情况下,TL 找到我,希望我能接。 但我也不想碰这个需求,但我跟他共事 7 年了,拉不下脸面。 但他以私人身份求我,甚至承诺把团队顶格绩效给我。 我还是想拒绝,但又怕得罪人,应该如何拒绝?
类似案例: 有家公司爬深圳市 ZF 网站上的公开数据。 但程序有 bug ,出现了死循环,导致以近 100qps 发请求。 最终把 ZF 网站打挂了,事情发生在周末,ZF 人员在休假,无人恢复,挂了一周末。 引发了很多市民的投诉,最终,技术总监和程序员都进去了。
![]() |
101
lasuar 4 天前
单纯功能来说,算不算高危。bug 导致高并发请求 url ?这是程序员自己的问题(并且 low ),这 bug 是挺严重的,你要是怂也可以不接。
其次,功能上来说这不算爬虫,因为只是读取基本信息,与访问网站无异,也只会访问一次。还可以增加一个逻辑,不读取 gov 网站。 |
102
dyc12389 4 天前
笑死了,可能就十几行代码的问题,op 搞得这么费事
另外 GET 请求也会跨域吗? |
104
x66 4 天前 ![]() 为什么帖子里会有人认为 GET 请求就没有跨域的问题?
我的理解 GET 请求只有在通过 HTML 加载静态资源的时候才不会有跨域限制啊。 但是楼主这个需求在 web 端肯定是要通过 XMLHttpRequest 或 Fetch API 来发起的 AJAX 请求获取数据啊,遵循同源策略, 这样请求必然会触发浏览器的跨域限制啊。 即便是 GET 属于简单请求,浏览器也会检查 response header 中的 Access-Control-Allow-Origin 和在 XMLHttpRequest.upload 对象属性上有没有注册任何事件监听器,但是这里的需求肯定是无法满足这两个限制的 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS @xiaochocking @supuwoerc |
![]() |
105
ColdBird 4 天前
og 有啥风险?
|
![]() |
106
ssgooglg 4 天前
钉钉也有这个功能 发任意 url 时会展示网页信息,不违法吧
|
![]() |
108
qq240316 4 天前
感觉你说的最后爬虫的是这个文章描述的内容
https://mp.weixin.qq.com/s/asHnST4z-3SzbHOmmj0-lw |
![]() |
109
hellodigua 4 天前
@me1onsoda 怎么可能是前端工作,前端爬取的时候会遇到跨域问题的,像这类功能大部分厂通用的解决方案还是后端提供一个接口,后端起一个爬虫服务自己去爬,同时缓存网站基本信息
|
110
firya 4 天前
既然是 im ,那后端干活就完了,消息是链接 ,后端请求链接拿到 html 里面的数据转成卡片需要的内容,前端直接展示
|
![]() |
111
zkqiang 4 天前
这个不就是 Open Graph 吗... 甚至有规范让你来获取 web 定义的信息
客户端调服务端接口去转发获取就行了,又不用频繁请求,遵循 robots.txt ,再从网上找一份白名单只请求白名单里的 这要算高危,那很多服务商早进去了。。 |
![]() |
112
zkqiang 4 天前
The Open Graph protocol: https://ogp.me/
|
![]() |
113
zkqiang 4 天前
如果这算高危,那在国内做 IM 产品本身不是更高危,有用户发点违法的东西,你们公司直接倒闭
|
115
JoeDH 4 天前
这种什么 url icon 都是公开的数据吧,发 IM 上发 url 时实时去请求解析就好了,不预先爬取数据并留存
你担心 zf 网站危险,那就过滤掉就好了 可以先做出来 60-70 分的成果,后续需要优化再优化(可能也就是 CEO 临时起意,过段时间就不感兴趣了) |
![]() |
117
Vindroid 4 天前
合规问题不大? skype 也有类似这种功能,叫链接预览,不算恶意爬虫。用户协议申明下,爬网页时遇到禁止爬虫的主动放弃就行了
|
![]() |
118
wuyiccc 4 天前
用户发消息的时候就把消息转化成带图片的消息,接收方用户直接接受的就是转换之后带图片的消息,接收方就不用再次解析消息了。这样应该就不会产生多次请求导致打崩对方网站的问题了吧
|
![]() |
119
HUZHUANGZHUANG 4 天前
你的 TL 和你之间的对话你都要有录音.不然这事就是费力不讨好.成功了你真以为他会兑现对你的承诺?
失败了你就是背锅侠 要做好一荣俱荣,一损俱损的打算. 他画饼只是为了管理你的预期罢了. 同事同事,共同做事而已 |
120
victorc 4 天前
这功能不属于爬虫,无风险
TL 可以直接指派,不愿做的开掉 |
![]() |
121
iyaozhen 4 天前
额 你不要来不来就如履薄冰,这个算不上高危需求
前面有人说了,有标准的 open graph 如果对应页面有,就直接使用 还有就是客户端爬取和服务端爬取的问题 前面大家都有说 一方面是合规(比如服务端你不能带用户翻墙,还得小心内网穿透问题),另一方面是 客户端可以携带用户身份(跨越这些技术问题自己解决 只是说有点麻烦 倒不至于有什么高危风险 再者可以参考现在各大 AI 发链接总结,这种一般是集成第三方爬取网站,也可以规避风险 类似: https://www.webpilot.ai/post-gpts/# |
![]() |
122
ytmsdy 4 天前
有个毛风险,别自己给自己加戏。
就抓一下 meta 信息,而且都公开的页面,实在不行,在客户端里面请求,别用服务器发送请求。 |
![]() |
123
wupher 4 天前
确实就是获取一下页面的 meta 信息就好。
如果漂亮点,对于 og 实现不好的网站,还可以使用 llm 生成总结。 你甚至可以把这个需求描述给 gpt 让它给你生成代码。 |
![]() |
124
sun019 4 天前
参考 115 楼的说吧,别一下想的太完美,先做个能用的版本上,后续有问题再优化。都是你们内部的 IM ,有啥哦。
|
125
GoNtte 4 天前
这个没啥风险的。让客户端给个方法,本地只请求一次,请求结果缓存下来
|
127
DLOG 4 天前
大部分分享的链接,是支持跨越请求的。
|
128
kemistep 4 天前
前端起一个 nodejs 接口,然后配置同源策略,用 nodejs 实现 meta 信息获取 ,都要多一层转发的
|
![]() |
129
liqingyou2093 4 天前
一个链接 一条记录 有个鸡儿风险
|
131
fredweili 4 天前
先做 MVP 技术验证,这时候就只支持内网,可以了下一阶段再说别的,那时候也许老大就忘了
|
![]() |
132
MaxwellX 4 天前
我测试了一下,企业微信对于政府端好像并没有解析
|
![]() |
134
solome 4 天前
这个需求并不复杂。但不是纯前端工作,抓取 icon 、title 、description 、keywords 这些需要服务端做(比如同个域名每天只需要请求\爬虫一次即可)。
另外,抓取 icon 、title 、description 、keywords 等信息并不违法。 |
![]() |
136
TORYOI 4 天前
我真讨厌聊天窗口对 url 做处理,只想要纯纯的文本。
|
![]() |
137
sazima 4 天前
企微钉钉都没问题, 你们也可以做。 实在不放心可以在设置项里面加个开关, 给点隐私风险提示, 让用户自己打开
|
138
iseki 4 天前
这个东西用不用看一眼 robots.txt 啊
|
![]() |
139
xuanbg 4 天前
哈哈哈,你以为微信这个功能是靠爬数据来的么???
|
![]() |
140
xinchao 4 天前
对域名做个缓存爬不崩的,至于违法,就爬个 tdk 能违法到哪里去,微信钉钉不都这么做吗?
|
![]() |
141
zhuichen 4 天前
我感觉你可以分两期进行,第一期先解析内部系统,以及不太敏感的网站先,先实现。第二期再考虑更大范围,至于合规问题,把问题往上抛就行,你把程序搞定就完了。另外可以看下企业微信怎么搞的,如果有合规问题,他们应该也不行
|
![]() |
142
xiaoxing0086 4 天前
其实也没那么高危
1.先看目标网站是否有 robots.txt ,根据 robots.txt 规则判定是否确定进行抓取。 2.一般每个 url 就抓一次就行了,也没不会轮训去抓的场景,这样 bug 概率太小了 |
143
Tezos 4 天前
太菜了吧 连 OG 标签都不知道
|
![]() |
144
ETiV 4 天前 via iPhone
我悟了 LZ 已经把自己想要的写在标题里了(不想做但不得罪人),而我们这帮人还在给他出主意如何实现……
|
![]() |
145
rimutuyuan 4 天前
一天能发多少 url 啊
|
![]() |
147
kasusa 3 天前
然后比如群里面 几千人大群,可以先客户端请求,一个客户端有了 icon 和描述,上传到群的服务器,其他人看消息慢的,从服务器拿数据,就不会对三方网站大并发访问了
|
148
aeron 3 天前
这玩意算不上违法吧,也就发的时候根据地址获取一下
|
![]() |
149
kasusa 3 天前
然后最常见的国内网站,直接长期缓存,根本不用爬
|
![]() |
150
anzu 3 天前 ![]() 我接过这个需求,确实不是很想做。涉及程序风险和内容风险。
1. 程序风险。需要注意爬虫服务器 IP 暴露风险,容易被针对性攻击,需要单独部署。解析程序也有漏洞风险,比如解析频次、解析内容溢出等错误导致解析程序崩溃或泄露敏感信息。 2. 内容风险。请注意 og 内容可以和实际看到的网页内容完全不一致,可以将违法信息藏于其中。那么问题来了,如果正好有这样一个违法页面,用户发的网页内容是完全正常的,而解析出来 og 信息是违法的,你猜猜是谁的责任? og 内容需要过滤,og 图片也需要过滤。og 信息要不要缓存?缓存策略如何安排?还有因缓存而导致的其它问题等等。 需要考虑的太多了。当然,对于大部分草台班子来说不需要考虑这么多。 |
151
chempotato 3 天前 via Android
发链接的客户端请求就好了 不管几个人的群
|
152
jeesk 3 天前
这种根本不是技术问题, 是法律风险的问题。 分享连接和粘贴链接是 2 个东西。
客户端粘贴一个链接在群里, 如果真的爬了, 出现的风险谁来担责任? |
153
tyrantZhao 3 天前
这玩意不是前端的工作吗?
|
154
cander0815 3 天前
针对这个需求,我的想法是。
1. 发出链接这个消息的那个客户端,先把链接发出去,然后每条消息都会有一个 id 吧,记录下这个 id 2. 然后发这个消息的客户端去请求这个网站的基本信息。请求到了就把基础数据在发一个消息。带上刚刚那个链接的 id 。 3. 然后别的客户端显示的时候,根据 id 找到刚刚那个链接,然后把网站的数据和链接消息气泡合并成一个卡片类型展示。 应该可以吧 |
155
cander0815 3 天前
@ETiV 好像是的。 那个怎么删除回复?🤔
|
156
mistygg 3 天前
就算是 webview 套壳,也可以用 js 跟原生交互的,让原生去做网络请求,把结果给到 web view ,没有跨域的问题
|
157
yov123456 3 天前
为啥要 Puppeteer 无头模式跑爬虫逻辑?直接 curl 解析 html tag 就好了。curl 不到的就不显示,也有很多提供这种服务端第三方服务商。
|
158
qpily 3 天前
CEO 知道这么做有概率会带来法律风险吗?无论是 TL 还是法务还是你,在立新项目是出现任何新情况,难道都不需要告知 CEO 有可能的法律风险? CEO 又不是技术专家,怎么可能完全明白新 idea 可能的风险
“但是 TL 已经答应了 CEO ,再反悔,会留下不良印象。TL 在公司表现不错,也很年轻,不希望在 CEO 面前丢分。”这 CEO 要是知道这个 TL 为了扒分,不惜扛着风险也要上,怕不是分都要扣到地底了 |
159
guangfa 2 天前
url 风险问题可以接入第三方的内容安全检测,找找各种云服务商,都有类似的功能,把 url 传给服务,服务会告诉你相关的风险,黄赌毒标识等,也会告诉你备案信息。
|