Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

python模拟登陆水木,如何知道提交的表单?

20 views
Skip to first unread message

ghost888

unread,
Apr 11, 2012, 10:34:45 PM4/11/12
to
Ŀǰ�Ѿ�ѧ��ʹ��urlopen()��BeautifulSoup��򿪽�����ҳ��д�˸�С������һЩ��վ��MP3���ĵ���
�����漰����Ҫ�û��������ύ����վ�Ͳ�֪��������֣����ʹ��cookie��cookiejar���淵�ص�
cookie������ʹ��firefox���firebug��ȡ�ύ�ı?��һͷ��ˮ������ϴ�ţָ�̡�

--
* ,MMM8&&&. *
MMMM88&&&&& .
MMMM88&&&&&&&
* MMM88&&&&&&&&
MMM88&&&&&&&&
'MMM88&&&&&&'


[m [36m�� ��Դ:��ˮľ���� http://newsmth.net��[FROM: 166.111.56.*] [m

老鱼

unread,
Apr 11, 2012, 11:09:42 PM4/11/12
to
注意cookie和post请求。

【 在 ghost888 (ghost888) 的大作中提到: 】
: 目前已经学会使用urlopen()和BeautifulSoup库打开解析网页,写了个小程序下
一些网站的MP3和文档。
: 但是涉及到需要用户名,密码提交的网站就不知道如何下手,基本会使用cookie和
cookiejar保存返回的
: cookie。现在使用firefox插件firebug获取提交的表单,一头雾水,请版上大牛
指教。

--
灭绝人性啊


[m [35m※ 来源:·水木社区 http://newsmth.net·[FROM: 125.78.148.*] [m

ghost888

unread,
Apr 11, 2012, 11:38:38 PM4/11/12
to
[b]你好,
我先把原始头文件贴出来。[/b]

GET /nForum/ HTTP/1.1
Host: www.newsmth.net
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://www.newsmth.net/
Cookie: %%%; nforum-left=%%%; %%%; main[UTMPUSERID]=ghost888; main[UTMPKEY]=%%%; main[UTMPNUM]=%%%; main[PASSWORD]=%%%
If-Modified-Since: Thu, 12 Apr 2012 03:08:51 GMT

然后是www.newsmth.net 的HTML的表单

<span>用户名:</span>
<input id="id" class="input-text" type="text" tabindex="1" onmouseover="this.focus()" size="10" name="id">
<span>密码:</span>
<input id="pwd" class="input-text" type="password" tabindex="2" onmouseover="this.focus()" size="10" name="passwd"

如何构造请求的headers 和 ulrparse.urlencode(parmas)?

不会每次人工把cookies抄下来吧[emc4]

多谢指教!

【 在 hgoldfish 的大作中提到: 】
: 注意cookie和post请求。
: 一些网站的MP3和文档。
: cookiejar保存返回的
: ...................

--
* ,MMM8&&&. *
MMMM88&&&&& .
MMMM88&&&&&&&
* MMM88&&&&&&&&
MMM88&&&&&&&&
'MMM88&&&&&&'


[m [32m※ 来源:·水木社区 http://newsmth.net·[FROM: 166.111.56.*] [m

明白1984

unread,
Apr 12, 2012, 9:50:18 AM4/12/12
to
应该和这个类似,不过cookie就不知道怎么处理了

python3
>>> import urllib.request
>>> import urllib.parse
>>> data = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> data = data.encode('utf-8')
>>> request = urllib.request.Request("http://requestb.in/xrbl82xr")
>>> # adding charset parameter to the Content-Type header.
>>> request.add_header("Content-Type","application/x-www-form-
urlencoded;charset=utf-8")
>>> f = urllib.request.urlopen(request, data)
>>> print(f.read().decode('utf-8'))


【 在 ghost888 (ghost888) 的大作中提到: 】
: [b]你好,
: 我先把原始头文件贴出来。[/b]
: GET /nForum/ HTTP/1.1
: ...................
--
空着不好……

[m [35m※ 来源:·水木社区 http://newsmth.net·[FROM: 221.219.111.*] [m

小Q||夏至

unread,
Apr 12, 2012, 11:59:28 AM4/12/12
to
cookie很好搞,基本通过自动设置就可以了,大多数都可以这么来完成:
# cookie install
cookie = cookielib.CookieJar();
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
urllib2.install_opener(opener)
比较麻烦的是怎么样获取post提交的字段
我模拟了一下www2登录的过程,发现登录过程中字段都隐藏起来了。我用了一个比较差劲的方法,登录两次。发现实际上要post三个字段, id, passwd, kick_multi

于是整个登录过程就是这样的
loginurl = 'http://www.newsmth.net/bbslogin1203.php?mainurl=';
logindata = {'id':'YOUUSERID','passwd':'YOURPASSWORD','kick_multi':'1'};
def login():

# cookie install
cookie = cookielib.CookieJar();
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
urllib2.install_opener(opener)

# simulate login
request = urllib2.Request(loginurl)
postdata = urllib.urlencode(logindata)
try:
urllib2.urlopen(request,postdata)
return True
except:
return False

用特快做例子是没问题的
expressurl = 'http://www.newsmth.net/bbsdoc.php?board=NewExpress'
def gethtml(url):
request = urllib2.Request(url)
response = urllib2.urlopen(request)
try:
html = response.read()
return html
except:
print '获取网页失败!'
return ''
if __name__ == '__main__':
if login():
print gethtml(expressurl)

【 在 ghost888 (ghost888) 的大作中提到: 】
: 目前已经学会使用urlopen()和BeautifulSoup库打开解析网页,写了个小程序下一些网站的MP3和文档。
: 但是涉及到需要用户名,密码提交的网站就不知道如何下手,基本会使用cookie和cookiejar保存返回的
: cookie。现在使用firefox插件firebug获取提交的表单,一头雾水,请版上大牛指教。

--

[m [36m※ 来源:·水木社区 http://newsmth.net·[FROM: 159.226.21.*] [m

小Q||夏至

unread,
Apr 12, 2012, 1:14:31 PM4/12/12
to
设置cookie使用python默认参数即可,像这样:
import cookielib, urllib2
cookie = cookielib.CookieJar();
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
urllib2.install_opener(opener)
之前都是蛮力破解POST字段,印象中有一个抓包工具叫HttpWatch很强大,POST字段很容易就抓出来。刚才试了一下,确实很方便。
通用的模拟登录的流程,我们可以私下交流一下。

【 在 ghost888 (ghost888) 的大作中提到: 】
: 目前已经学会使用urlopen()和BeautifulSoup库打开解析网页,写了个小程序下一些网站的MP3和文档。
: 但是涉及到需要用户名,密码提交的网站就不知道如何下手,基本会使用cookie和cookiejar保存返回的
: cookie。现在使用firefox插件firebug获取提交的表单,一头雾水,请版上大牛指教。

--

[m [34m※ 来源:·水木社区 http://newsmth.net·[FROM: 159.226.21.*] [m

ghost888

unread,
Apr 12, 2012, 9:11:53 PM4/12/12
to
嗯,如何填写POST数据了?
【 在 mingbai1984 的大作中提到: 】
: 应该和这个类似,不过cookie就不知道怎么处理了
: python3
: >>> import urllib.request
: ...................

--
* ,MMM8&&&. *
MMMM88&&&&& .
MMMM88&&&&&&&
* MMM88&&&&&&&&
MMM88&&&&&&&&
'MMM88&&&&&&'


[m [36m※ 来源:·水木社区 http://newsmth.net·[FROM: 166.111.56.*] [m

明白1984

unread,
Apr 12, 2012, 10:15:39 PM4/12/12
to
修改data里面的字段就可以了吧,python会把它作为post数据发送的

【 在 ghost888 (ghost888) 的大作中提到: 】
: 嗯,如何填写POST数据了?

--
空着不好……

[m [36m※ 来源:·水木社区 http://newsmth.net·[FROM: 159.226.169.*] [m

ghost888

unread,
Apr 13, 2012, 4:23:17 AM4/13/12
to
嗯,现在我用httpwatch找到post数据了,但是不会发~~
现在还没有成功。
【 在 mingbai1984 的大作中提到: 】
: 修改data里面的字段就可以了吧,python会把它作为post数据发送的
:

--
* ,MMM8&&&. *
MMMM88&&&&& .
MMMM88&&&&&&&
* MMM88&&&&&&&&
MMM88&&&&&&&&
'MMM88&&&&&&'


[m [31m※ 来源:·水木社区 http://newsmth.net·[FROM: 166.111.56.*] [m

ghost888

unread,
Apr 13, 2012, 4:24:44 AM4/13/12
to
嗯,我也用httpwatch把post找出来了。
如何暴力破解?
最近在写论文,把这阵忙完了,有时间我们交流一下吧。
【 在 qyou 的大作中提到: 】
: 设置cookie使用python默认参数即可,像这样:
: import cookielib, urllib2
: cookie = cookielib.CookieJar();
: ...................

养生修学

unread,
Apr 13, 2012, 4:33:37 AM4/13/12
to
网上一堆例子,找个改改就能用,何必造轮子?

【 在 ghost888 (ghost888) 的大作中提到: 】
: 嗯,现在我用httpwatch找到post数据了,但是不会发~~
: 现在还没有成功。


--
花气破枯禅,松声煮新茗。


[m [1;32m※ 来源:·水木社区 newsmth.net·[FROM: 211.99.222.*] [m

那啥那啥都被抢注了

unread,
Apr 13, 2012, 8:33:32 AM4/13/12
to
Firebug应该同时选中“保持”,不然redirect后POST就被冲掉了
【 在 ghost888 (ghost888) 的大作中提到: 】
: 目前已经学会使用urlopen()和BeautifulSoup库打开解析网页,写了个小程序下一些网站的MP3和文档。
: 但是涉及到需要用户名,密码提交的网站就不知道如何下手,基本会使用cookie和cookiejar保存返回的
: cookie。现在使用firefox插件firebug获取提交的表单,一头雾水,请版上大牛指教。

--

[m [32m※ 来源:·水木社区 http://newsmth.net·[FROM: 14.154.183.*] [m

ghost888

unread,
Apr 13, 2012, 10:05:54 PM4/13/12
to
嗯,学习了。多谢!

如何从www.newsmth.net登陆,在网格选项里面没有找到POST,
http://www.newsmth.net/nForum/#!mainpage 登陆,却可以找到POST。
两次登陆过程中均没有打开“保持”。
不知道为什么?

【 在 pyer 的大作中提到: 】
: Firebug应该同时选中“保持”,不然redirect后POST就被冲掉了
[upload=1][/upload][upload=2][/upload]
--
* ,MMM8&&&. *
MMMM88&&&&& .
MMMM88&&&&&&&
* MMM88&&&&&&&&
MMM88&&&&&&&&
'MMM88&&&&&&'


[m [36m※ 来源:·水木社区 http://newsmth.net·[FROM: 166.111.56.*] [m

那啥那啥都被抢注了

unread,
Apr 14, 2012, 12:10:52 AM4/14/12
to
不是说了旧版会redirect么?不选择保持就被冲掉了,咋听话呢
【 在 ghost888 的大作中提到: 】
: 嗯,学习了。多谢!
: 如何从www.newsmth.net登陆,在网格选项里面没有找到POST,
: http://www.newsmth.net/nForum/#!mainpage 登陆,却可以找到POST。
: ...................
--

[m [34m※ 来源:·水木社区 http://newsmth.net·[FROM: 14.154.183.*] [m

ghost888

unread,
Apr 14, 2012, 1:28:37 AM4/14/12
to
嗯,多谢。

【 在 pyer 的大作中提到: 】
: 不是说了旧版会redirect么?不选择保持就被冲掉了,咋听话呢

--
* ,MMM8&&&. *
MMMM88&&&&& .
MMMM88&&&&&&&
* MMM88&&&&&&&&
MMM88&&&&&&&&
'MMM88&&&&&&'


[m [36m※ 来源:·水木社区 http://newsmth.net·[FROM: 166.111.56.*] [m
0 new messages