V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kong0bbs
V2EX  ›  职场话题

如何拒绝高危需求又不得罪人?

  •  
  •   kong0bbs · 2 天前 · 10313 次点击

    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 人员在休假,无人恢复,挂了一周末。 引发了很多市民的投诉,最终,技术总监和程序员都进去了。

    159 条回复    2024-06-29 12:59:50 +08:00
    1  2  
    NevadaLi
        1
    NevadaLi  
       2 天前 via iPhone   ❤️ 3
    高危需求要和对方直截了当的表明情况,对方还没有意识到问题的严重性。如果你俩关系不错,建议也劝他别因小失大。

    关键问题太委婉会让对方意识不到危险,到时候真出事就麻烦了。
    xzour
        2
    xzour  
       2 天前 via Android
    可以找找有没有第三方卖这种数据的。不一定要自己亲自爬
    kong0bbs
        3
    kong0bbs  
    OP
       2 天前 via iPhone
    不是静态数据,而是发任意 url 要抓取 tkd 信息展示成卡片,包括公司内网 url 和外网 url 。
    lloovve
        4
    lloovve  
       2 天前 via iPhone
    直接跟 ceo 反馈啊,这又不是技术问题,不要想着用技术解决
    xzour
        5
    xzour  
       2 天前 via Android
    @kong0bbs 强大的第三方其实也是实时的(比如企查查,爱企查这种爬工商信息的,不也卖接口)。自己内部的网站那就简单,自己对接就好。如果百度卖这种数据,比你自己爬还强大。由于这个不像企查查这种有商业机会,估计也不太好找,但可以去试试做搜索引擎的服务商。
    dji38838c
        6
    dji38838c  
       2 天前
    这个只是一次性对一个 URL 进行一个 GET 请求,很多国外 IM 都有,应该不算有合规问题吧?
    renmu
        7
    renmu  
       2 天前 via Android   ❤️ 2
    这种信息直接请求 html 就能拿到而且本来就是给浏览器或者外部应用看的,我觉得不涉及所谓爬虫
    xzour
        8
    xzour  
       2 天前 via Android
    @dji38838c 对,也可以改为发 url 消息才请求一次 get ,而不是预处理。限制请求间隔抓缓存。
    ETiV
        9
    ETiV  
       2 天前   ❤️ 23
    我觉得可以接,因为标准是开放的,叫 open graph ,https://ogp.me/

    比如现在这个帖子,查看 HTML 代码,就会看到下面这些:

    <meta property="og:locale" content="zh_CN" />
    <meta property="og:type" content="article" />
    <meta property="og:title" content="如何拒绝高危需求又不得罪人? - V2EX" />
    <meta property="og:description" content="职场话题 - @kong0bbs - CEO 发现到企业微信上发任意 http url 能够以卡片的形式显示。卡片会展示该 url 的 icon 、title 、description 、keywords 几个信息。CEO 觉得这" />
    <meta property="og:url" content="https://www.v2ex.com/t/1052841" />
    <meta property="og:site_name" content="V2EX" />

    企微也不是每个 URL 都有卡片展示的,抓不到的就不显示呗
    xzour
        10
    xzour  
       2 天前 via Android   ❤️ 4
    看上面的回答,不涉及爬虫,顶格绩效,可以考虑接下。
    potatowish
        11
    potatowish  
       2 天前 via iPhone
    调第三方接口,不要自己去抓取,出了事第三方兜底
    forvvvv123
        12
    forvvvv123  
       2 天前
    企微是怎么实现的,怎么解决的合规问题?
    abigeater
        13
    abigeater  
       2 天前
    以客户端 IP 发送的请求,不算高危需求吧。看很多 IM 都实现了
    x86
        14
    x86  
       2 天前
    这种只是取个 meta 头信息不算爬吧
    bigfei
        15
    bigfei  
       2 天前 via Android
    可以从客户端请求发,涉及不到爬虫
    kong0bbs
        16
    kong0bbs  
    OP
       2 天前 via iPhone
    我们 im 是 web 套壳,没有安卓/ios 开发,前端说没法子跨站发请求。

    而且前端发请求会导致 ip 特征变得很明显,都是公司出口 ip ,很快就会被封。
    kong0bbs
        17
    kong0bbs  
    OP
       2 天前 via iPhone
    前端发请求,同源策略过不去
    toesbieya
        18
    toesbieya  
       2 天前
    web 套壳那让基座写个请求方法给 web 调不就行了吗
    vanleon
        19
    vanleon  
       2 天前   ❤️ 5
    先做公司侧的 url ,今年做完了拿定格绩效,然后明年跑路
    iOCZS
        20
    iOCZS  
       2 天前
    不写代码就是最安全的
    RicardoY
        21
    RicardoY  
       2 天前
    这不是现在每个 IM 几乎都有的功能吗(
    ksmiloLove
        22
    ksmiloLove  
       2 天前
    这个不是网站自己配置的展示信息吗?怎么要 im 去爬啊?
    kong0bbs
        23
    kong0bbs  
    OP
       2 天前
    先做公司侧的 url ,今年做完了拿定格绩效,然后明年跑路
    --------
    TL 为了让 CEO 满意,要求全都支持。

    web 套壳那让基座写个请求方法给 web 调不就行了吗
    --------
    今年裁员,把安卓、IOS 的老司机都干掉了,剩下几个应届生,做不来,只能维护老代码。
    4ark
        24
    4ark  
       2 天前 via iPhone
    感觉多虑了,照你这么说任何代码都有可能因为 bug 把服务器或者客户端干崩
    ReactRails
        25
    ReactRails  
       2 天前 via iPhone
    点进来之前还以为是什么涉及资金或者黑客攻击的需求,结果就这点小事。你的风险意识很好,但这顶多算个中等风险吧。国内国外的所有 IM ,不管是微信 QQ 还是钉钉飞书,国外的 WhatsApp Line telegram 都有这个功能,你把风控还有告警弄好,问题不大的
    kong0bbs
        26
    kong0bbs  
    OP
       2 天前
    团队里面其他人不敢做,让我有点慌。

    我其实做了个原型:

    1 、用阿里云的 Serverless+Puppeteer 无头模式跑爬虫逻辑,Serverless 大概有 10 个公网 IP ,小规模使用问题不大。
    2 、在 Serverless 上挂 NAS 盘,基于 NAS 盘做文件缓存,缓存 URL 和解析结果。
    3 、如果调用量比较大,可以在 Serverless 上套弹性公网 IP 池,或者到某宝买代理,然后在 Puppeteer 上配代理。

    新申请 1 个阿里云账号,把这块业务挂在单独账号上,跟公司主账号切割开。
    这 1 套 3 天就写完了,但是不敢上,怕摊上事儿。
    ETCartman
        27
    ETCartman  
       2 天前   ❤️ 3
    转发到企业微信再从企业微信里取 :)
    Remember
        28
    Remember  
       2 天前
    你不要用爬虫,用客户端访问一下,展示就行了。

    IM 基础功能,这怎么可能有风险?
    leconio
        29
    leconio  
       2 天前 via iPhone
    @ETCartman 出院!
    forgottencoast
        30
    forgottencoast  
       2 天前   ❤️ 3
    @kong0bbs
    你这套做法摊上事不是正常吗,都用上什么 IP 池,代理。
    用上面人说的客户端请求处理,而且出错就只显示链接,不重试,出不了事。
    kong0bbs
        31
    kong0bbs  
    OP
       2 天前
    你这套做法摊上事不是正常吗,都用上什么 IP 池,代理。
    用上面人说的客户端请求处理,而且出错就只显示链接,不重试,出不了事
    --------
    这个思路不错,但是今年老板把安卓/IOS 团队干掉了,
    现在是前端 Web 团队做客户端,App 就是 Web 套壳,
    原生侧就只剩几个新手在维护老代码。非常尴尬。
    kong0bbs
        32
    kong0bbs  
    OP
       2 天前
    而且,我们 IM 还有 Web 端,直接在 Chrome 里运行。
    Web 端用户蛮多,这个方案在 Web 端跑不了。
    watzds
        33
    watzds  
       2 天前   ❤️ 10
    真厉害啊,先把这个说得风险多大多大,然后接了拿个好绩效,学习了
    bagel
        34
    bagel  
       2 天前
    思路从头就错了,压根不涉及到爬虫。你自己去抓包看看,企业微信的实现就是在客户端抓取的,发消息 baidu.com 能抓到向百度域名的请求,就是解析首页 html 取几个 meta 字段和一个 favicon 。再怎么考虑法律风险,最多加一个白名单,备案域名才抓取,备案域名定时全量下发客户端。
    kong0bbs
        35
    kong0bbs  
    OP
       2 天前 via iPhone
    客户端发请求的话,Web 端解决不了啊,浏览器又不让跨域。
    kong0bbs
        36
    kong0bbs  
    OP
       2 天前 via iPhone
    Web 端解决不了啊,浏览器又不让跨域。
    kong0bbs
        37
    kong0bbs  
    OP
       2 天前 via iPhone
    产品形态要求 IM 功能在各端对齐,而且 web 端有不少用户。
    除非是 web 端把请求发给服务端,服务端转给移动端。看起来似乎可行,我不清楚能不能这么干。
    Goooooos
        38
    Goooooos  
       2 天前 via Android
    客户端请求的话那就难讲了,几百人一起请求,对方服务如果被搞坏了,那你们就有问题。一般都是服务端请求。
    lneoi
        39
    lneoi  
       2 天前
    如果你是客户端里面包含第三方地址,导致第三方请求数量过大而出问题,那责任应该也在你这儿。所以前后端做应该都一样?
    NDHT
        40
    NDHT  
       2 天前
    听说过哪个,好像是破坏计算机信息系统罪?个人觉得没有主观故意,判刑有点牵强。
    有第三方爬虫公司,比如深圳的八爪鱼,好像可以直接调用让人家去爬,真搞出风险也是别家的问题。
    rabbbit
        41
    rabbbit  
       2 天前
    1 设置白名单,仅显示白名单内的网站。至于哪些网站在白名单内,让他们自己去判断。理由就说可能会抓取到违法网站。
    2 上面说了,套壳的应用用基座发请求。没人就找外包。不批就实现不了。
    tetora
        42
    tetora  
       2 天前
    再外包一次囖
    Atma
        43
    Atma  
       2 天前 via Android
    对的,楼上说的,白名单
    chanChristin
        44
    chanChristin  
       2 天前 via iPhone
    能请求多少是多少,其他的再排期,就说第一期先搭建基础框架,后面再慢慢加,后面啥时候加还不是你说了算。
    Felldeadbird
        45
    Felldeadbird  
       2 天前
    curl 读一次网站,入库就就不在请求不行吗?然后单个域名每分钟限制请求次数 + 1 小时总请求次数限制。

    再不行还有一个办法,找一台电脑不关机,开着浏览器。浏览器写一个扩展,读取需要打开的网站,然后扩展把打开的网站信息发给服务器。 这可是真实访问。
    horizon
        46
    horizon  
       2 天前
    这当然从客户端请求了,然后缓存起来。
    走服务端就是爬虫了。
    wbrobot
        47
    wbrobot  
       2 天前
    @forvvvv123 企业微信有各种黑白名单保证不会显示 h 网,暴力 x 腥等

    @leconio 实际上 @ETCartman 说的反而是最简单可行的方案,做个企业微信机器人往私人小群里发,然后看看有没有办法获取到消息,我记得机器人应该可以获取到,不知道 URL card 行不行。

    拿到的话就拼接做 card ,拿不到,就去掉超链接,发成文字,十分安全可靠。
    BeiChuanAlex
        48
    BeiChuanAlex  
       2 天前
    走客户端不就好了
    akira
        49
    akira  
       2 天前
    看着是大公司,怎么感觉做法又是小作坊那一套...
    ETCartman
        50
    ETCartman  
       2 天前   ❤️ 1
    zbinlin
        51
    zbinlin  
       2 天前
    这种爬有什么问题,符合 Robots.txt 就行了。
    Pastsong
        52
    Pastsong  
       2 天前
    有 Robots.txt 就可以爬

    > TL 为了让 CEO 满意,要求全都支持
    你们 TL 才是最大的问题
    klo424
        53
    klo424  
       2 天前
    我领导经常想让我搞高危需求,因为他太菜搞不定,我都是直接拒绝,并告诉他这么做犯法。
    bk201
        54
    bk201  
       2 天前
    没明白需要什么爬虫,如果企微能做,别的就能做。
    bk201
        55
    bk201  
       2 天前
    web 端跨域,本地服务转发不就好了
    sujin190
        56
    sujin190  
       2 天前 via Android
    手机端直接请求就行吧,为啥要爬,用户端直接访问不存在不合规问题,只要你别想着搞什么伪造会话登录什么的,这多好的绩效干嘛不要,企微说不定也是前端直接请求的,否则太耗资源了不值当
    agostop
        57
    agostop  
       2 天前 via Android
    按 34f 说的做,应该没问题,再建议还是客户端搞,用代理+缓存的思路,代理解决跨域问题,缓存解决并发多人请求问题
    InDom
        58
    InDom  
       2 天前
    给你换个思路,你做一个开源项目,实现类似的功能。

    然后把仓库给 TL ,他自己找人调包使用。

    现在,TL 的任务完成了,仓库也和你没啥关系。
    shawnsh
        59
    shawnsh  
       2 天前 via Android
    CEO 闲着没事干要当产品了?
    vmebeh
        60
    vmebeh  
       2 天前
    发链接的客户端来生成卡片,不过就可能会伪造卡片,会有个安全风险
    munan56
        61
    munan56  
       2 天前
    这种预览为什么要爬虫啊
    Lockeysama
        62
    Lockeysama  
       2 天前
    要么试试嵌入一个魔改的 WebView 的思路?
    abc1310054026
        63
    abc1310054026  
       2 天前
    你是不是不懂技术啊,WebView 关掉 CORS 策略,Google 查查都知道怎么弄。Open Graph 的数据访问下 HTML 甚至都不用你加载 JS 就能拿到。

    你把需求说的有多高难度跟你 leader 说去,在这里说不是浪费大家时间吗
    abelmakihara
        64
    abelmakihara  
       2 天前
    让应届生学下套壳的插件怎么写不就行了
    这么基本的又不是多复杂的插件
    以前做套壳的时候 复杂的是有原生的 简单的功能还不都是前端自己写插件
    zyPro
        65
    zyPro  
       2 天前
    飞书貌似有这个功能了....法律问题应该还好吧
    rbe
        66
    rbe  
       2 天前
    就是 og 协议,解析一下 html head 部分的几个 meta 标签就行,一般都是实时解析的。怎么被你说的这么吓人。🧐
    encro
        67
    encro  
       2 天前
    这种不违背,风险较少,你只是获取页面 title 。

    需要算力资源较多,比如页面现在都是前后端分离,你爬取需要模拟 js 执行。
    fulvaz
        68
    fulvaz  
       2 天前
    - - 你做需求不调研竞品吗,竞品能做,你就去做呗。
    sunpj
        69
    sunpj  
       2 天前
    webview 跟 native 可以通过 jsbridge 搞的 跟是不是前端套壳没关系
    colincat
        70
    colincat  
       2 天前
    @kong0bbs 这点都做不到的话,新手也可以开除了,有什么难的,网上找找代码,一堆,前怕狼后怕虎干不成事
    stillsilly
        71
    stillsilly  
       2 天前
    哪里高危了……
    zhw2590582
        72
    zhw2590582  
       2 天前
    一次 get 请求还好吧,而且你可以设置数据缓存一天,问题不大
    supuwoerc
        73
    supuwoerc  
       2 天前
    和楼上持相同意见,open graph 和 meta 就能获取到基本的信息了.... nextjs 一大堆 seo 优化不都是这方面的,感觉不涉及爬虫啊...
    supuwoerc
        74
    supuwoerc  
       2 天前
    <meta property="og:title" content="title" />
    <meta property="og:type" content="video.movie" />
    <meta property="og:url" content="https://xxx.net/" />
    <meta property="og:image" content="https://xxx.net/" />
    @supuwoerc
    loryyang
        75
    loryyang  
       2 天前
    这个我看下来,没啥大毛病,这个和爬虫区别很大的,你需要的时候实时请求一下,没多少量的
    edotac
        76
    edotac  
       2 天前
    新手不会就学呀,是多么难的技术吗。。。
    linxb
        77
    linxb  
       2 天前
    你自己把需求想复杂了吧,这不就是一个 URL 高亮与内容关键词识别的需求吗,你可以看下有个开源 IM ,mallchat 的实现方案,只是简单的抓包分析而已,哪有什么高危风险
    gaopu
        78
    gaopu  
       2 天前
    这么个功能就顶格绩效,就...玩一样
    robotdiy
        79
    robotdiy  
       2 天前
    这跟爬虫有关系吗???
    jydeng
        80
    jydeng  
       2 天前
    没有法律问题,飞书之类的 APP 都支持,完全可以做。
    xiaochocking
        81
    xiaochocking  
       2 天前
    @kong0bbs #35 我想知道 Web 发 GET 请求跨啥域
    xiangyuecn
        82
    xiangyuecn  
       2 天前
    拿服务器去爬,一抓一个准
    vevlins
        83
    vevlins  
       2 天前
    爬个 meta 就行,你不行让你 leader 外包给我做吧。
    这种东西有啥风险,你走到街上还有可能因为莫须有的问题被抓寻衅滋事呢,吃个水果还有可能中毒,只要 ROI 可观,都可以做
    dingyaguang117
        84
    dingyaguang117  
       2 天前
    怪不得国内经济不好,连底层打工人都人人自危
    supuwoerc
        85
    supuwoerc  
       2 天前
    @kong0bbs Get 获取 html 不是符合简单请求吗?为啥会触发 Cors ?
    joyhub2140
        86
    joyhub2140  
       2 天前
    不用拒绝,你就说自己也搞不定,这时候认怂对自己是有好处的。
    watzds
        87
    watzds  
       2 天前
    @Goooooos #38 要么客户端先请求后端,获取爬取权限(限流),返回允许客户端就爬一次,把结果也告诉后端缓存,其他客户端可以复用
    yufeng0681
        88
    yufeng0681  
       2 天前
    我不想做的需求,就会找各种理由拒绝。 全文看下来,就是缺人,有爬虫风险会背锅。
    1 、网页请求量根本上不来
    1.1 、一个群发的 url ,没几个人看,上不来量 [相对网站的访问量]
    1.2 、后端服务去取 url 要的卡片信息,只需页面对应 html , 不需要 html 里面的 js 图片等资源,对网站进一步降低了访问量
    1.3 、群发的 url 又不是一家网站的 url ,一天发个 200 条 url 消息,估计一个网站的 url 也就 10 条了不得了,这个量算啥?
    2 、服务器方案的好处
    2.1 、可以做白名单,黑名单。不会出事
    2.2 、可以获取到授权才能获得的信息 [登录类的,内网类的,翻墙类的]
    2.3 、可以随意调整信息字段,如果还有其他定制需求 ,比如能直接打开对应 app ,而不是体验差的网页
    3 、扩展性好
    3.1 、手机的短信 app 已经好多集成了 push 功能, 这类功能很像 push 特性, 非常方便 IM 的运营, 运营是能带来商业价值的。
    jdkxnktkdkxod
        89
    jdkxnktkdkxod  
       2 天前
    @kong0bbs
    我们 im 是 web 套壳,没有安卓/ios 开发,前端说没法子跨站发请求。

    而且前端发请求会导致 ip 特征变得很明显,都是公司出口 ip ,很快就会被封。

    ————————
    这一段话就暴露了你们有多菜
    wwlzz
        90
    wwlzz  
       2 天前
    这个是 open graph 公开协议,没有啥风险吧
    hxysnail
        91
    hxysnail  
       2 天前
    配个域名白名单,先实现内网 url ,这样对 CEO 就有交代了;
    然后把外网可能涉及的风险提出来,让 CEO 拍板;
    CEO 同意就让运维调整配置,去掉白名单控制;
    这样操作下来还跟写代码的有半毛钱关系?

    程序配置化,文档注释充分揭示风险,至于别人想怎么配,怎么用,那是别人的事
    chairuosen
        92
    chairuosen  
       2 天前
    一句话,想法很好,想得太多
    caiji11
        93
    caiji11  
       2 天前
    法务让技术测判断 你们公司挺抽象
    MENGKE
        94
    MENGKE  
       2 天前
    这跟爬虫有什么关系,有啥法律问题?就发个请求这个网址,然后解析下<head>部分显示出来就可以了
    Torpedo
        95
    Torpedo  
       2 天前
    你就单独请求一下网址,然后根据 url 做 id ,只解析 html 的头里那几个标签就可以了。你这点请求量一般也不会被反爬的

    这个功能还可以往后做。像飞书里有些网址发到聊天有更详细的展示,这种就是有个配置平台,可以配置解析。所以做完这个后面还可以针对内部网站做定制化
    fenddddddda
        96
    fenddddddda  
       2 天前
    分多期做, 一期 把 CEO 常用的几个 url 搞定.. 微信域名啥的,二期以后再说吧。
    me1onsoda
        97
    me1onsoda  
       2 天前
    这看起来是个前端的工作,但 op 好像又不是前端。这有点意思,op 说了一大堆风险,结果不是你做,TL 答应把顶格绩效给你🤣
    x66
        98
    x66  
       2 天前
    如果有人发一个链接到一个 2000 人的大群,那这个链接就会被请求 2000 次?
    Moierby
        99
    Moierby  
       2 天前
    你要后端封装一个接口,简单的 curl 请求就可以拿到目标网站返回的 html ,把 favicon 和 meta 信息发给前端,不就可以了
    me1onsoda
        100
    me1onsoda  
       2 天前   ❤️ 1
    @Goooooos 服务端请求才是有问题。比方说我做个浏览器,用户用这个浏览器查高考分,把网站查崩了赖我这个开发者?
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2354 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:20 · PVG 13:20 · LAX 22:20 · JFK 01:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.