美文网首页
一加论坛登录(python 小白登天日记)

一加论坛登录(python 小白登天日记)

作者: DoraLvor | 来源:发表于2017-07-09 22:28 被阅读103次

    大部分网站的登录是用的post请求,返回的内容包含咱们需要的cookie里面的内容。

    那什么是cookie呢?

    当我开发移动端app的时候,每次像服务器请求都需要发送给服务器我的账户名和密码,而网页开发的时候,<b><a style= "color:red">服务器端如何验证你是你呢?</a></b>
    这个时候就是需要cookie的时候了,当我们在浏览器上登录一个网站之后,本地并不需要保存你的账户名和密码,只需要保存这个cookie就行了,你可以把它当作一个有时间限制的门禁卡,当你访问服务器这个房子里需要用户登录的门时,只要刷一下,门就开了。

    要想模拟一加论坛的登录,首先还有一个必不可少的操作,<a style = "color:red">抓包</a>

    一加论坛抓包现场

    在Mac上我常用的抓包工具是Charles和surge,windows常用的瑞士军刀burp,当然其实chrome和Firefox也很好用,在这里就不赘述了。
    简单说一下怎么抓包,打开<a href = "http://www.oneplusbbs.com/">一加登录页面</a>,打开程序点开始录制,填写一个错误的密码,抓包工具就抓到了(如上图所示)
    <b>之所以填错误的密码是为了它跳到登录后的页面,获取一些无用信息。</b>

    我把抓到的数据复制到了下面:
    <code>
    POST http://account.oneplus.cn/onepluslogin HTTP/1.1
    Host: account.oneplus.cn
    Proxy-Connection: keep-alive
    Content-Length: 89
    Accept: application/json, text/javascript, /; q=0.01
    Origin: http://account.oneplus.cn
    X-Requested-With: XMLHttpRequest
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    Referer: http://account.oneplus.cn/login?jump=http%3A%2F%2Fwww.oneplusbbs.com%2F&source=2
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4
    Cookie: *

    loginName=138%40163.com&passWord=password&source=2&remember=0&channel=2&verifyCode=
    </code>

    咱们需要的:

    方法名:<code>POST</code>
    请求地址:<code>http://account.oneplus.cn/onepluslogin</code>
    参数params:<code>loginName=138%40163.com&passWord=password&source=2&remember=0&channel=2&verifyCode=</code>

    可以看出来,相对于新浪微博来说,一加论坛的登录还是挺简单的,用户名和密码都没有进行加密,直接变成参数用来请求。
    而且经过测试,登录时需要headers伪装成浏览器的,大可以把headers当作一个字典参数,而这个字典里面有些东西是必要的,有些不是。

    咱们暂时需要的东西都找到了,现在开始写python(2.7):

    <code>
    import httplib
    import urllib

    Url = "account.oneplus.cn"#HOST地址
    loginUrl = "/onepluslogin"#请求地址拼接地址
    post_data = {#请求体(body),包含各种参数,也就是上面咱们抓到的
    "loginName": "你的账号",
    "passWord": "你的密码",
    "source": 2,
    "remember": 0,
    "channel": 2,
    "verifyCode": ""
    }
    headers = {#请求头,经过我测试,只需要这一个参数就行了
    "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
    }
    conn = httplib.HTTPConnection(Url)
    params = urllib.urlencode(post_data)#将post_data这个字典转换成字符串
    conn.request(method="POST",url=loginUrl,body=params,headers=headers);#开始登录
    response = conn.getresponse()#response就是请求后返回的数据
    print response.msg#打印返回的body
    print response.status#打印返回的状态码
    </code>

    因为我是个小白,刚开始写完运行成功我也不知道,什么也打印不出来,最后打印了一下response.status发现状态码是200,然后搜索了一下,才打印出了msg,这才知道是自己太笨了。

    和小伙伴的对话

    相关文章

      网友评论

          本文标题:一加论坛登录(python 小白登天日记)

          本文链接:https://www.haomeiwen.com/subject/blgdhxtx.html