paulw54jrn
V2EX  ›  问与答

如何用 Python 脚本模拟顶贴?

  •  
  •   paulw54jrn · Sep 22, 2014 · 5550 views
    This topic created in 4275 days ago, the information mentioned may be changed or developed.
    我用python可以成功登陆论坛,并且通过了用户验证.
    但是在发帖的时候提示:"的请求来路不正确或表单验证串不符,无法提交。请尝试使用标准的web浏览器进行操作。"
    POST方法的 params, header, data和用Chrome dev tools显示的一模一样.
    大家有碰到这个情况吗?
    10 replies    2014-09-22 22:54:45 +08:00
    mornlight
        1
    mornlight  
       Sep 22, 2014
    你要把打开这个页面时的所有非静态资源请求都看一下,是不是有js执行了某些东西。

    如果你真的模拟了一模一样的请求还不行,那根本和python以及代码没关系,而是整个过程有缺失。
    crab
        2
    crab  
       Sep 22, 2014
    你是不是缺少了页面的token参数,或者有检测referer。
    ld0891
        3
    ld0891  
       Sep 22, 2014
    是Discuz论坛么?
    如果是Discuz,检查一下Host,Referer,formhash等hash字段填的对不对,有些discuz还要求posttime。
    调HTTP用Firefox好些,用Chrome有些限制字段抓包显示不对的,曾经被坑了好久。
    paulw54jrn
        4
    paulw54jrn  
    OP
       Sep 22, 2014
    @mornlight
    @crab
    @id0891
    看页面是Discuz的. Host,Referer跟Chrome显示的一样,formhash用re从页面里面弄下来了. Posttime用time.sleep()延迟了也不行.
    crab
        5
    crab  
       Sep 22, 2014
    @paulw54jrn 如果是DZ,应该是formhash错误啦。
    paulw54jrn
        6
    paulw54jrn  
    OP
       Sep 22, 2014
    @crab
    formhash可以打印出来,登陆的时候用同样的方式可以把loginhash和formhash拿下来,所以我觉得formhash应该没错(这个没法验证,每个页面的hash都不同..).

    https://gist.github.com/paulw54jrn/b98dda3e8be2c95661d9
    crab
        7
    crab  
       Sep 22, 2014
    不懂python,但最后那个post的DZ地址应该是版面,有fid这样的参数地址。
    paulw54jrn
        8
    paulw54jrn  
    OP
       Sep 22, 2014
    @crab
    这个是有的呢,在post方式里面通过params传进去,具体的值在param这个dict里面.
    crab
        9
    crab  
       Sep 22, 2014
    按你给的那fid=626试了下。
    post地址: http://www.yeeyi.com/bbs/house.php?mod=post&action=newthread&topicsubmit=yes
    这个 Content-Type:multipart/form-data
    ld0891
        10
    ld0891  
       Sep 22, 2014
    @paulw54jrn posttime不是sleep搞定的,也是在网页里。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   888 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 22:32 · PVG 06:32 · LAX 15:32 · JFK 18:32
    ♥ Do have faith in what you're doing.