如何用 Python 脚本模拟顶贴?

2014-09-22 20:06:48 +08:00
 paulw54jrn
我用python可以成功登陆论坛,并且通过了用户验证.
但是在发帖的时候提示:"的请求来路不正确或表单验证串不符,无法提交。请尝试使用标准的web浏览器进行操作。"
POST方法的 params, header, data和用Chrome dev tools显示的一模一样.
大家有碰到这个情况吗?
4638 次点击
所在节点    问与答
10 条回复
mornlight
2014-09-22 20:13:22 +08:00
你要把打开这个页面时的所有非静态资源请求都看一下,是不是有js执行了某些东西。

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

https://gist.github.com/paulw54jrn/b98dda3e8be2c95661d9
crab
2014-09-22 20:32:49 +08:00
不懂python,但最后那个post的DZ地址应该是版面,有fid这样的参数地址。
paulw54jrn
2014-09-22 20:36:00 +08:00
@crab
这个是有的呢,在post方式里面通过params传进去,具体的值在param这个dict里面.
crab
2014-09-22 22:21:36 +08:00
按你给的那fid=626试了下。
post地址: http://www.yeeyi.com/bbs/house.php?mod=post&action=newthread&topicsubmit=yes
这个 Content-Type:multipart/form-data
ld0891
2014-09-22 22:54:45 +08:00
@paulw54jrn posttime不是sleep搞定的,也是在网页里。。。

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

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

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

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

© 2021 V2EX