selenium 不能加 headers,那该怎么办?

2016-08-21 18:35:27 +08:00
 katyang

想写个自动顶帖的脚本, 打算用 selenium webdriver 实例 的 execute_script 功能 回帖需要先登录,我就把 cookie 写在 headers 里面 这时才发现 selenium 好像不能加 headers ,那该怎么办?

之前试了一下 requests.get(),得到的是<Response [200]=""> 所以就没有想过 requests.post()了

9779 次点击
所在节点    Python
13 条回复
ltux
2016-08-21 18:50:18 +08:00
不要直接用 requests.get() 和 requests.post(),这俩函数需要你手工管理 cookie 。请使用 requests.Session 类,可自动管 cookie ,用法也很简单,具体可看文档 http://docs.python-requests.org/en/master/user/advanced/#session-objects
ltux
2016-08-21 18:53:35 +08:00
如果是用 selenium webdriver 的话, 也不需要手工管理 cookie 吧,这事儿浏览器就帮你做了
ltux
2016-08-21 18:58:38 +08:00
"那该怎么办?" 使用 selenium webdriver 在登陆页输入登陆信息然后调用 submit() 或者 click() 提交表单就行了吧
jason52
2016-08-21 21:54:46 +08:00
直接录制一下脚本,然后转成 Python 最简单。
hebwjb
2016-08-21 22:03:23 +08:00
selenium 不需要关注什么 headers 、 cookie 之类的,完全模拟人工操作,定位元素、输入账号密码登录就可以了
katyang
2016-08-22 06:28:52 +08:00
@hebwjb 谢谢指点
katyang
2016-08-22 06:29:49 +08:00
@jason52 有什么好的录制和转换工具可以推荐一下吗^_^
katyang
2016-08-22 06:33:17 +08:00
@ltux 谢谢! 可不可以说 selenium 比 requests 更强大呢?
okampfer
2016-08-22 09:08:45 +08:00
@katyang Selenium 会启动浏览器窗口并进行操作, requests 是发送和处理 http 请求。前者有界面更重量级,后者无界面更轻量级。前者因 selenium 本身缺陷可能不太稳定且费时,后者方便快捷。前者更接近真实用户操作(浏览器和用户的交互)常用于 UI 自动化测试,后者更 geek 更接近浏览器和服务器交互的本质。

录制和转换的话用 Firefox 的插件 SeleniumIDE 即可。

以我的经验,除非你想做 UI 测试,否则不需要用 selenium 。打开开发者工具研究 http 请求的规律用 requests 复现整个过程就行了。
jetyang
2016-08-22 09:32:36 +08:00
google 一下 selenium browsermob proxy 有惊喜
practicer
2016-08-22 13:21:07 +08:00
正在写 phantomJS + header :
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0'
driver = webdriver.PhantomJS('path/to/PhantomJS', desired_capabilities=dcap)
driver.get(<your_url>)

虽然加了 header 信息,但最后发现不加 header 目标网站也让我爬
thekoc
2016-08-22 14:12:43 +08:00
好像可以用浏览器的插件管理 headers
twocucao
2016-08-27 10:12:19 +08:00
我之前是通过 Python 脚本调用执行 Phantomjs 的 Js 脚本的.

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

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

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

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

© 2021 V2EX