1
chemzqm 2015-12-18 22:01:53 +08:00 1
走 http 就行了,用不着浏览器啊,就是 OCR 可能比较费劲,开源的都不好用,您可以用 opencv 去实现一个
|
2
hansnow 2015-12-18 22:04:13 +08:00 1
试试 selenium ?
|
3
yuewolf OP @chemzqm 对菜鸟而言,走 http 太艰难了, QQ 空间这个不是那种一般的字段提交就 OK ,密码那里不知道怎么加密的,加密算法似乎还经常更新。所以,幻想走浏览器是不是更容易。
|
5
linhua 2015-12-18 22:18:20 +08:00 1
1.如果只是提取 cookie ,可以用浏览器调试工具找到请求 API ,模拟登录请求,这应该是 qqlib 所用方法。
2.或者用 headless browser https://en.wikipedia.org/wiki/Headless_browser https://github.com/dhamaniasad/HeadlessBrowsers |
6
terence4444 2015-12-18 22:19:24 +08:00
只用 GET/POST 可以,再复杂的一点的就要 HTTP 了吧。
|
7
angelface 2015-12-18 22:21:37 +08:00 1
mechanize?
|
8
yuewolf OP @just1 不想多说什么,你有空看一下,还牵涉各种加密。当然,一个简单的“学”字绝对可以解决这个问题。可有时候人是不是应该多少站别人立场上多想那么一丁点儿呢?
|
9
lecher 2015-12-18 22:33:00 +08:00 3
又没有给钱,为什么要花自己的时间和精力去站到懒人的立场多考虑一些。
真不把别人的时间和精力当回事吗。 |
10
kslr 2015-12-18 22:43:04 +08:00 1
模拟一个浏览器(搜一下叫什么 JS 来着),控制鼠标去点下登陆,然后获取 Cookie 这样就简单了吧
|
11
yuewolf OP @lecher 你看清楚,我说明自己做过尝试了,找过代码,尝试过。并且,一路搜索找到了对方在简书上的文章 http://www.jianshu.com/p/4217d8f3574b
尝试了两三天以后,失败了,所以求个指点,想着或许其他人有更好方法和思路。我肯定很菜,但不能说是纯粹的伸手党吧? 他简单地回复了一个“学”字,让非常郁闷的我心里更堵,所以做了如上回复。我只是觉得,要么干脆就别回复,呵斥我一句能有多爽呢? 语言撕逼隔几天就上演, V2 里面也不都是纯粹高手在华山论剑吧?我这个问题有那么碍您眼睛? |
12
icedx 2015-12-18 22:44:38 +08:00
能
|
13
vmebeh 2015-12-18 22:46:05 +08:00 1
不管什么加密都是在浏览器端实现的, JavaScript 可以直接看源码
以前的 webQQ 的密码是三次 md5 后加盐再一次 md5 |
14
yuewolf OP @linhua 是的,QQlib 的作者就是这样搞的。分析了 QQ 所用的一个 JS 加密,然后在 http://www.jianshu.com/p/4217d8f3574b 这篇文中提出:
JS 中的方法对应于 Python 中的实现: md5 => hashlib.md5 uin2hex => to_bytes hexchar2bin => bytes.fromhex strToBytes => binascii.hexlify btoa => base64.b64encode 说实话,这些我只了解 md5 …… 而且,看他文中标注似乎已经失效,这个 JS 算法经常变动。 所以我就想干脆不走 http 提交。 |
16
hanfeng3015 2015-12-18 22:51:07 +08:00 1
可以研究一下 PyWebkit
|
18
just1 2015-12-18 22:53:14 +08:00 via Android 1
Mechanize ?
|
19
yuewolf OP |
20
linhua 2015-12-18 23:03:21 +08:00 2
也许你想实现在 python 中调用 javascript 代码,即用 python 实现的 javascript 解析器。如 python-spidermonkey , Js2Py
关键词: javascript parser in python |
21
quericy 2015-12-19 00:00:24 +08:00
个人觉得 LZ 这种情况写个 chrome 扩展进行模拟登录可能会更容易点
|
22
g00001 2015-12-19 01:03:09 +08:00 1
aardio 控制浏览器很简单, http://www.visualget.com/ 这个就是 aardio 开发的, 这已经做成一个生成这类程序的开发工具了。里面就有 QQ 空间登录发说说的。
|
23
Stargi 2015-12-19 01:13:01 +08:00 1
可以试试 splinter
http://splinter.readthedocs.org/en/latest/ |
24
yuewolf OP |
25
msg7086 2015-12-19 04:36:32 +08:00
直接用无头浏览器组件还是很方便的。
做网站自动化测试的时候也会用到浏览器模拟提交,用到的技术是类似的。 扩展阅读: PhantomJS - Webkit Slimer.js - Gecko CasperJS - 另一个 JS 运行环境 |
26
thomaspaine 2015-12-19 20:51:14 +08:00
robotframework
适合懒人 |
27
anexplore 2015-12-20 00:00:06 +08:00 via iPhone
selenium webdriver
|
28
yuewolf OP @msg7086 @Stargi 请教一个问题:
browser.find_by_id('go').first.click() #get the session cookie #time.sleep(1) theCookies = browser.cookies.all() mystr = ";".join(["%s=%s" % (k, v) for k, v in theCookies.items()]) print mystr 如果浏览器用 Firefox ,模拟点击之后打开新页面,然后获取登录后的 Cookie 。可是用 PhantomJS 或者 Chrome 获取的都是登录前的 Cookie ,必须上面那样 sleep 1 - 2 秒等页面打开才可以。 |