立即注册

编程论坛

广告联系qq1031180668广告位
查看: 745|回复: 3

[python] post方式实现网站注册

[复制链接]
  • ta_mind
    擦汗
    2019-3-27 07:25
  • classn_01: 72 classn_02

    [LV.6]常住居民II

    1021

    主题

    1742

    帖子

    3558

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    3558

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2018-7-19 14:02:10 | 显示全部楼层 |阅读模式
    很多网站并不是直接get访问就能爬取的,有些内容需要注册登录后才可以查看,这时候就需要用到post。
    以c++技术网 http://www.cjjjs.com/ 为例,进行post注册。
    第一步找到注册页面的url   http://www.cjjjs.com/user/register.aspx
    然后我们填写信息进行注册,同时用fidder或者别的抓包工具进行抓包。抓包的时候我们可以在网站上随便填写,并不一定要填写正确,只要正确获取到提交的包就可以了。


    post方式实现网站注册

    post方式实现网站注册


    我们在textview下面看到的就是post提交的数据,为了方便查看我们可以在webfroms下查看到详细信息。

    post方式实现网站注册

    post方式实现网站注册


    这些就是我们注册时提交的几条数据,他们分别对应着在网页上输入的账号密码等一些信息,根据这个我们就可以写代码了。
    [Python] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    import urllib.request
    #注册提交地址
    url="http://www.cjjjs.com/user/register.aspx"
    headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.7 Safari/537.36"}
    
    username=input("用户名:")
    password=input("密码:")
    xingbie=input("性别:")
    year=input("出生年份:")
    emile=input("邮箱:")
    
    #提交数据
    fromdata={
        "__VIEWSTATE":"/wEPDwUKLTkxMDY0MzExNw9kFgJmD2QWBgICDxYEHgRocmVmBRAvdXNlci9sb2dpbi5odG1sHglpbm5lcmh0bWwFBueZu+W9lWQCAw8WBB8ABRMvdXNlci9yZWdpc3Rlci5odG1sHwEFBuazqOWGjGQCBA9kFgICAQ9kFgZmDw8WAh4EVGV4dAUEc2Rhc2RkAgEPFgIfAWVkAgMPFgIfAQUf5a+G56CB6ZW/5bqm5LiN6IO95bCP5LqONuS4qu+8gWRkOFKI9pTbjZCwaZgAIfycoI2uHRg=",
        "__VIEWSTATEGENERATOR":"__VIEWSTATEGENERATOR", #不用管
        "ctl00$ContentPlaceHolder1$text_name":username, #用户名
        "ctl00$ContentPlaceHolder1$input_password": password,#密码
        "ctl00$ContentPlaceHolder1$input_pwdconform":password,#确认密码
        "ctl00$ContentPlaceHolder1$select_sex":xingbie,#性别
        "ctl00$ContentPlaceHolder1$text_year":year,#出生年份
        "ctl00$ContentPlaceHolder1$TB_RegMail":emile,#邮箱
        "ctl00$ContentPlaceHolder1$btn_register":"注册"#不用管
    
    
    }
    
    
    
    data=urllib.parse.urlencode(fromdata) #对提交数据进行url编码
    data=data.encode("utf-8") #把提交数据转成字节
    print(data)
    req=urllib.request.Request(url,data=data,headers=headers) #c重构协议头
    response= urllib.request.urlopen(req) #发送post请求
    print(response.read().decode("utf-8"))#获取返回数据并解码
    


    post方式实现网站注册

    post方式实现网站注册

    从返回结果中我们可以分析出是否注册成功和注册失败原因(网页上的提示都在网页源码里)

    post方式实现网站注册

    post方式实现网站注册

    我们只是测试,就不进行完善注册检验或者自动注册了。


    不积跬步,无以至千里
  • ta_mind
    无聊
    2019-2-12 14:14
  • classn_01: 47 classn_02

    [LV.5]常住居民I

    0

    主题

    36

    帖子

    168

    积分

    注册会员

    Rank: 2

    积分
    168
    发表于 2018-7-19 15:17:23 | 显示全部楼层
    www
    顶顶顶顶顶顶
  • ta_mind
    擦汗
    2018-11-16 18:19
  • classn_01: 1 classn_02

    [LV.1]初来乍到

    0

    主题

    1

    帖子

    29

    积分

    新手上路

    Rank: 1

    积分
    29
    发表于 2018-11-16 18:27:47 | 显示全部楼层
    嘎嘎,我来顶一下
  • ta_mind
    开心
    3 天前
  • classn_01: 17 classn_02

    [LV.4]偶尔看看III

    20

    主题

    26

    帖子

    96

    积分

    注册会员

    Rank: 2

    积分
    96
    QQ
    发表于 2019-2-21 16:17:23 | 显示全部楼层
    棒棒的,顶一下
    游客
    回复
    您需要登录后才可以回帖 登录 | 立即注册

    手机版|Archiver|小黑屋|sitemap| 从零开始,编程论坛 - 一个单纯的编程学习交流论坛 ( 豫ICP备15032706号 )

    GMT+8, 2019-7-21 18:59 , Processed in 1.088889 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表