免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 13324 | 回复: 10
打印 上一主题 下一主题

python urllib.urlencode问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-28 14:26 |只看该作者 |倒序浏览
我要写一个登陆网站的脚本,把用户名和密码都写进去了。可是我发现不管用户名和密码是否正确(随便写),都会返回200 OK的结果。

我的脚步:

#!/usr/bin/python
#coding=gbk
import urllib
import httplib
params = urllib.urlencode({'username:':'test','Password:':'123456',
                                         'cookies_time': '1',
#                                          'search':'sSearch',
                                         'IsLogin':True})
headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
conn = httplib.HTTPConnection("xxx.xxx.com:80"
conn.request("OST","/login.php",params, headers)
response = conn.getresponse()
print response.status, response.reason
print  response.read()
conn.close()

被这个问题憋了两天了。大家帮忙给看一下,谢谢

论坛徽章:
0
2 [报告]
发表于 2009-09-28 14:29 |只看该作者
哪个网站,不妨发出来看看。

论坛徽章:
0
3 [报告]
发表于 2009-09-28 14:31 |只看该作者
其实就是mail.sina.com

论坛徽章:
0
4 [报告]
发表于 2009-09-28 14:49 |只看该作者
urllib 貌似不支持对cookie的操作吧。。。
用urllib2实现的。。
# #!/usr/bin/python
import httplib,time,re
import urllib2,cookielib
#httplib.HTTPConnection.debuglevel = 1
def main(name,pwd):
        cj = cookielib.CookieJar()
        opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
        opener.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 538; .NET CLR 2.0.  50727; CIBA; MAXTHON 2.0)')]
        url = "http://mail.sina.com.cn/cgi-bin/login.cgi"
        data = "domain=sina.cn&logintype=uid&u=Name&domain=sina.com&psw=Pwd&btnloginfree=%B5%C7+%C2%BC".replace("Name",name).replace("Pwd",pwd)
        u = opener.open(url,data)
        page = u.read()
        try:
            if page.decode("gb2312").encode("utf8").find("您填写的用户名或密码错误") != -1:
                print "login error"
        except:
            print "login ok"
main("xxx","111111")


[ 本帖最后由 king6o60 于 2009-9-28 14:54 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-09-28 14:56 |只看该作者
多谢,我试一下:)

论坛徽章:
0
6 [报告]
发表于 2009-09-28 14:58 |只看该作者
他登录失败都是自己打印的信息,跟HTTP 200没啥关系。

论坛徽章:
0
7 [报告]
发表于 2009-09-28 15:06 |只看该作者
没有任何错误信息,即使我输入错误的秘密。没有报错。不知道是为啥。

论坛徽章:
0
8 [报告]
发表于 2009-09-28 16:15 |只看该作者
原帖由 sgm277 于 2009-9-28 15:06 发表
没有任何错误信息,即使我输入错误的秘密。没有报错。不知道是为啥。

你把页面抓过来就知道啦。
可能没明白我的意思吧,你搞错概念了,200是HTTP返回的,他那边登录错误只是HTML输错,跟200状态没关系。

论坛徽章:
0
9 [报告]
发表于 2012-03-13 20:44 |只看该作者
即使你输入错的密码,服务器那边,也会响应你的,会返回给你一个页面,所以是200的status。
但是返回的页面的内容,则是对应的包含了错误的信息,比如让你重新登陆的页面。
总之,需要判断返回的html的内容,而不单单是看返回的http的状态的。

论坛徽章:
0
10 [报告]
发表于 2012-03-14 12:23 |只看该作者
需要判断返回的html的内容 <= 这才是亮点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP