python 模拟登陆 Github

2014-09-23 20:45:41 +08:00
 SakuraSa

最近在学习python,想要用python爬一点Github上的数据
可是第一步模拟登陆就失败了
能请各位看看是什么问题么?

https://gist.github.com/SakuraSa/36ddbfc4ffb331eb2eae

环境:
python==2.7
BeautifulSoup==3.2.1
requests==2.4.0

5442 次点击
所在节点    问与答
25 条回复
keithellis
2014-09-23 20:51:38 +08:00
csrf-token
kslr
2014-09-23 20:56:08 +08:00
@keithellis 和我上一个头像是一样的。
SakuraSa
2014-09-23 20:59:50 +08:00
@keithellis
请问是这样么?
https://gist.github.com/SakuraSa/bbfd422c56b69991cf2c
我这里似乎还是不行……
keithellis
2014-09-23 21:03:46 +08:00
先访问 https://github.com/login
取出 <input name="authenticity_token" type="hidden" value="mMDKe49Tbw7EEaPHkiQHdCngXvRt7QWKAOPn/AQrgmbYJBZqNETMq6thgWSXvusWvPje+zzrzpXR6pX7aq+uTA==" /> 中 authenticity_token 的值。
SakuraSa
2014-09-23 21:10:04 +08:00
嗯,这个值在代码中已经取出了
这是当前代码的 payload 的值:
{'password': 'password', u'utf8': u'\u2713', 'login': 'username', u'commit': u'Sign in', u'authenticity_token': u'4+XkNAr6ZmwCakFtTT8I/+mSowYHW4OfFGYlOMnDMN05a1taSwKicHTQ4KdR5XDM0k0WwHLEcx/B+IEtQyZUpQ=='}
keithellis
2014-09-23 21:12:26 +08:00
u'utf8': u'\u2713' 可以不要
SakuraSa
2014-09-23 21:14:05 +08:00
@keithellis
结果还是不行的样子,不论加不加 u'utf8': u'\u2713'
oott123
2014-09-23 21:20:02 +08:00
诶,GitHub 有 API 的呀,没必要自己模拟嘛,多麻烦。
https://developer.github.com/v3/
SakuraSa
2014-09-23 21:23:05 +08:00
@oott123
还有这么方便的API,之前都不知道呢~

不过,我的目的主要是要熟悉一下怎么用python爬数据
所以,还是希望问题能够得到解答
keithellis
2014-09-23 21:23:29 +08:00
@SakuraSa POST 到 https://github.com/session 这个 URL。
SakuraSa
2014-09-23 21:25:06 +08:00
@keithellis
rsp = session.post('https://github.com/session', data=payload, headers=headers)
的确是post到这个地址的……
keithellis
2014-09-23 21:30:18 +08:00
SakuraSa
2014-09-23 21:35:21 +08:00
我也得到了200的代码
但是并没有得到cookie
正确的cookie应该有:
logged_in=yes
user_session=xxxxxxxx
但是我的返回结果中没有(而且从内容看,似乎返回了首页的内容
SakuraSa
2014-09-23 21:36:21 +08:00
@keithellis
摸不到头绪,哪里错了呢 (✖﹏✖)↷
keithellis
2014-09-23 22:01:34 +08:00
keithellis
2014-09-23 22:07:46 +08:00
SakuraSa
2014-09-23 22:16:03 +08:00
@keithellis
是的呢,我也得到了同样的页面,状态200
但是似乎没有得到cookie
我把您例子的代码最后稍作修改:
https://gist.github.com/SakuraSa/3f1095cb0e98e6a0c59c
结果是这样的:
<Cookie logged_in=no for .github.com/>
<Cookie _gh_sess=eyJsYXN0X3dyaXRlIjoxNDExNDgxNjIxNzUxLCJzZXNzaW9uX2lkIjoiZWZiYWMzYzcyNjdkMTg5NDMwY2IxYTEwZTQ5MWM3NTIiLCJfY3NyZl90b2tlbiI6IjBNV0JEbkIxZWhuaUsrb3NmVndFTGk2MGpMTmFtbVRjUWVnYXptYlVZbUk9In0%3D--cf3681efff227b7b20789487548f5609b492f320 for github.com/>
--------------------
logged_in: no
[Finished in 5.1s]

似乎是没有登陆成功呢(顺请教一下,如何贴gist的代码呢?
keithellis
2014-09-23 22:34:19 +08:00
@SakuraSa 不好意思,多问一句,有替换 USER = 'USER' 和 PASSWORD = 'PASSWORD'为自己的用户名和密码吗。
keithellis
2014-09-23 22:35:49 +08:00
@SakuraSa 我就忘记替换了!
SakuraSa
2014-09-23 22:46:49 +08:00
@keithellis
的确很容易忘记呢,一开始我也忘记过(还差点把自己的账户贴出去了……
但是,现在这几次我没忘记呢
<a href="http://imgur.com/97TmB6o"><img src="?2" title="Hosted by imgur.com" /></a>

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

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

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

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

© 2021 V2EX