• 请不要在回答技术问题时复制粘贴 AI 生成的内容
macken
V2EX  ›  程序员

搜狗微信的反爬虫策略又升级了

  •  2
     
  •   macken · Oct 10, 2015 · 16717 views
    This topic created in 3891 days ago, the information mentioned may be changed or developed.

    继前不久升级反爬策略以后,又来了一次打升级,躺枪一片,非登陆情况下,新的策略使用了服务端生成验证串的方式,要破解很难,除非能破解加密算法了。大家有什么研究?

    35 replies    2016-01-29 14:42:10 +08:00
    pc10201
        1
    pc10201  
       Oct 10, 2015
    用浏览器模拟,加大量代理 IP
    macroideal
        2
    macroideal  
       Oct 10, 2015
    道高一尺, 魔高一丈
    macken
        3
    macken  
    OP
       Oct 10, 2015
    @pc10201 不是模拟的问题
    ljcarsenal
        4
    ljcarsenal  
       Oct 10, 2015 via Android
    为什么都要做微信相关的爬取呢
    skip11
        5
    skip11  
       Oct 10, 2015
    1.登录
    2.模拟浏览器获取那个串

    我也是昨天才发现临时更新的算法
    macken
        6
    macken  
    OP
       Oct 10, 2015
    @ljcarsenal 好玩
    macken
        7
    macken  
    OP
       Oct 10, 2015
    @skip11 国庆期间更新的 登录是一个方法,那个串是与帐号相关的,获取以后再抓取数据成本太高了
    sohoer
        8
    sohoer  
       Oct 10, 2015
    我不知道是不是通过搜狗抓取,如果是那就是 ext 这个参数,这个参数会失效需要隔段时间获取一次
    skip11
        9
    skip11  
       Oct 10, 2015
    @macken 我有几天没看了,我是自己抓过来离线读,具体什么时候更新的不是很清楚,@sohoer,楼主应该说的就是 ext ,失效模拟一下就好了,目前还不难,不知道搜狗后续会更新什么手段
    Moker
        10
    Moker  
       Oct 10, 2015
    前端时间就不行了
    加代理 IP 和降低频率 目前估计只能这样
    macken
        11
    macken  
    OP
       Oct 10, 2015
    @sohoer @skip11 是 ext,怎么模拟?我试过用搜索的方式获得 ext ,但是这种方法太麻烦了
    johnsneakers
        12
    johnsneakers  
       Oct 10, 2015
    现在就是一个 302 而已,你多请求一次拿到 302 的地址就可以了
    johnsneakers
        13
    johnsneakers  
       Oct 10, 2015
    (PHP 版本)粘贴即可看到效果:

    $url = "http://weixin.sogou.com/websearch/art.jsp?sg=CBf80b2xkgbhjl0x-hNnSEuCKYJJPsg_h-OjrOxHjU_vFtJfSKnjpz19wNWA5ILUTtJveGGSfLC6VBIRlwc6srq5lrLZ5gXykqfIRjtZWiJm_nQjhF6DEb6_H-c9J_ZynM4JG0XEf_vu4a6BXqY6ow..&url=p0OVDH8R4SHyUySb8E88hkJm8GF_McJfBfynRTbN8wisH87qPWS2UFAFG9qAbOBeXY6RLCSg2kRDYt5ROwiYPFLvkvBrfA0sgKbswv_WSNpL5BYLq2cVN2huY78d2DfqLtelzlOATJZYy-5x5In7jJFmExjqCxhpkyjFvwP6PuGcQ64lGQ2ZDMuqxplQrsbk";
    echo sogou_weixin($url);


    function sogou_weixin($url) {

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $data = curl_exec($ch);
    $Headers = curl_getinfo($ch);
    curl_close($ch);
    if ($data != $Headers)
    return $Headers["url"];
    else
    return false;
    }
    macken
        14
    macken  
    OP
       Oct 10, 2015
    @johnsneakers 恩,这是上一次升级后出现的问题,这次升级增加了 ext 验证
    fishlee
        15
    fishlee  
       Oct 10, 2015 via Android
    还没试过这方法,有空搞搞看
    johnsneakers
        16
    johnsneakers  
       Oct 10, 2015   ❤️ 1
    @macken 我刚试了,是可以的
    macken
        17
    macken  
    OP
       Oct 10, 2015
    @johnsneakers 这种方式是可以拿到最终的文章 url 的,我遇到的问题是直接访问 http://weixin.sogou.com/gzh?openid=oIWsFtzDjnBIlyxXFCgp7hAApCeM 是无法访问的,必须是这种方式才可以访问 http://weixin.sogou.com/gzh?openid=oIWsFtzDjnBIlyxXFCgp7hAApCeM&ext=Uc8g8yaxQpH6htELFQfGDr3PzTLZg-34eXRrntsODlbP32F_9hAQlNM8VKlUG_IA url 里面的 ext 是刚加的验证机制
    yepinf
        18
    yepinf  
       Oct 10, 2015
    之前用 qwebkit 爬,一直很稳定
    换工作之后,就没继续做下去了
    icedx
        19
    icedx  
       Oct 10, 2015
    搜狗微信 是啥?
    blue7wings
        20
    blue7wings  
       Oct 11, 2015
    我在想, sogou 的微信数据是官方给的嘛。。。
    macken
        21
    macken  
    OP
       Oct 11, 2015
    @yepinf 估计悬了。。
    macken
        22
    macken  
    OP
       Oct 11, 2015
    @blue7wings 应该是的 腾讯也投资搜狗了
    macken
        23
    macken  
    OP
       Oct 11, 2015   ❤️ 1
    icedx
        24
    icedx  
       Oct 11, 2015
    @macken Thx
    cai314494687
        25
    cai314494687  
       Oct 12, 2015
    @johnsneakers 提示:当前请求已过期,请点击重新加载 是什么回事?
    johnsneakers
        26
    johnsneakers  
       Oct 13, 2015
    @cai314494687 url 地址换一个就好
    johnsneakers
        28
    johnsneakers  
       Oct 13, 2015
    @cai314494687 哦,我和你不一样。 我爬的是搜索页, 取搜索结果列表里面的 url
    bowbright
        29
    bowbright  
       Nov 15, 2015
    @skip11
    1.登录
    2.模拟浏览器获取那个串
    具体能展开说说么
    bowbright
        30
    bowbright  
       Nov 15, 2015
    @johnsneakers 实验了你的代码,取到的 data 好像现在不对了。
    <html>
    <head><title>400 Bad Request</title></head>
    <body bgcolor="white">
    <center><h1>400 Bad Request</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
    g080166
        31
    g080166  
       Jan 11, 2016
    请问这个问题后来有解决方案了吗?
    g080166
        32
    g080166  
       Jan 11, 2016
    搜狗一旦弄得多了,就让我输入验证码,已经被搞疯了,想问下有好心人提供下解决方案吗?
    ACzero
        33
    ACzero  
       Jan 19, 2016   ❤️ 1
    @g080166 搜狗对采集限制比较严格,用 ip 代理可以解决
    g080166
        34
    g080166  
       Jan 21, 2016
    @ACzero 谢谢你的回答。我想问下用 ip 代理的话,会不会不稳定?另外,搜狗微信方面是否对这部分代理 ip 进行甄别?
    ACzero
        35
    ACzero  
       Jan 29, 2016
    @g080166 可以去抓一些免费的代理 ip ,有不少都是每日或者每小时更新的,当然这些代理 ip 只有部分能用,提高采集频率就行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2444 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 82ms · UTC 15:58 · PVG 23:58 · LAX 08:58 · JFK 11:58
    ♥ Do have faith in what you're doing.