热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python登录代码_转载——Python模拟登录代码

Createdon2014-2-20author:Vincentimporturllib.parseimportgzipimportjsonimportrefromhtt

'''

Created on 2014-2-20

@author: Vincent

'''

import urllib.parse

import gzip

import json

import re

from http.client import HTTPConnection

from htmlutils import TieBaParser

import httputils as utils

# 请求头

headers = dict()

headers["Connection"] = "keep-alive"

headers["Cache-Control"] = "max-age=0"

headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"

headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36"

headers["Content-Type"] = "application/x-www-form-urlencoded"

headers["Accept-Encoding"] = "gzip,deflate,sdch"

headers["Accept-Language"] = "zh-CN,zh;q=0.8"

headers["COOKIE"] = ""

# COOKIE

COOKIEs = list()

# 个人信息

userInfo = {}

def login(account, password):

'''登录'''

global COOKIEs

headers["Host"] = "wappass.baidu.com"

body = "username={0}&password={1}&submit=%E7%99%BB%E5%BD%95&quick_user=0&isphone=0&sp_login=waprate&uname_login=&loginmerge=1&vcodestr=&u=http%253A%252F%252Fwap.baidu.com%253Fuid%253D1392873796936_247&skin=default_v2&tpl=&ssid=&from=&uid=1392873796936_247&pu=&tn=&bdcm=3f7d51b436d12f2e83389b504fc2d56285356820&type=&bd_page_type="

body = body.format(account, password)

conn = HTTPConnection("wappass.baidu.com", 80)

conn.request("POST", "/passport/login", body, headers)

resp = conn.getresponse()

COOKIEs += utils.getCOOKIEsFromHeaders(resp.getheaders())

utils.saveCOOKIEs(headers, COOKIEs)

# 登录成功会返回302

return True if resp.code == 302 else False

def getTieBaList():

'''获取已关注的贴吧列表'''

conn = HTTPConnection("tieba.baidu.com", 80)

conn.request("GET", "/mo/m?tn=bdFBW&tab=favorite", "", headers)

resp = conn.getresponse()

tieBaParser = TieBaParser()

tieBaParser.feed(resp.read().decode())

tbList = tieBaParser.getTieBaList()

return tbList

def getSignInfo(tieBaName):

'''获取贴吧签到信息'''

queryStr = urllib.parse.urlencode({"kw":tieBaName, "ie":"utf-8", "t":0.571444})

conn = HTTPConnection("tieba.baidu.com", 80)

conn.request("GET", "/sign/loadmonth?" + queryStr, "", headers)

data = gzip.decompress(conn.getresponse().read()).decode("GBK")

signInfo = json.loads(data)

return signInfo

tbsPattern = re.compile('"tbs" value=".{20,35}"')

def signIn(tieBaName):

'''签到'''

# 获取页面中的参数tbs

conn1 = HTTPConnection("tieba.baidu.com", 80)

queryStr1 = urllib.parse.urlencode({"kw": tieBaName})

conn1.request("GET", "/mo/m?" + queryStr1, "", headers)

html = conn1.getresponse().read().decode()

tbs = tbsPattern.search(html).group(0)[13:-1]

# 签到

conn2 = HTTPConnection("tieba.baidu.com", 80)

body = urllib.parse.urlencode({"kw":tieBaName, "tbs":tbs, "ie":"utf-8"})

conn2.request("POST", "/sign/add" , body , headers)

resp2 = conn2.getresponse()

data = json.loads((gzip.decompress(resp2.read())).decode())

return data

def getUserInfo():

'''获取个人信息'''

headers.pop("Host")

conn = HTTPConnection("tieba.baidu.com", 80)

conn.request("GET", "/f/user/json_userinfo", "", headers)

resp = conn.getresponse()

data = gzip.decompress(resp.read()).decode("GBK")

global userInfo

userInfo = json.loads(data)

if __name__ == "__main__":

account = input("请输入帐号:")

password = input("请输入密码:")

ok = login(account, password)

if ok:

getUserInfo()

print(userInfo["data"]["user_name_weak"] + "~~~登录成功", end="\n------\n")

for tb in getTieBaList():

print(tb + "吧:")

signInfo = signIn(tb)

if signInfo["no"] != 0:

print("签到失败!")

print(signInfo["error"])

else:

print("签到成功!")

print("签到天数:" + str(signInfo["data"]["uinfo"]["cout_total_sing_num"]))

print("连续签到天数:" + str(signInfo["data"]["uinfo"]["cont_sign_num"]))

print("------")

else:

print("登录失败")



推荐阅读
  • 【Python爬虫实操】 不创作小说,专精网站内容迁移,超高效!(含源代码)
    本文详细介绍了如何利用Python爬虫技术实现高效网站内容迁移,涵盖前端、后端及Android相关知识点。通过具体实例和源代码,展示了如何精准抓取并迁移网站内容,适合对Python爬虫实战感兴趣的开发者参考。 ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • 在今天的实践中,我深入学习了网页图像抓取技术,通过编写爬虫程序批量获取网站上的图片资源。具体来说,我选择了一个包含大量高质量图片的网站作为练习对象,并成功实现了将这些图片批量下载到本地存储。这一过程不仅提升了我对爬虫技术的理解,还增强了我的编程能力。 ... [详细]
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • PyQt5 QTextEdit:深入解析Python中多功能GUI库的应用与实现
    本文详细探讨了 PyQt5 中 QTextEdit 组件在 Python 多功能 GUI 库中的应用与实现。PyQt5 是 Qt 框架的 Python 绑定,提供了超过 620 个类和 6000 个函数及方法,广泛应用于跨平台应用程序开发。QTextEdit 作为其中的重要组件,支持丰富的文本编辑功能,如富文本格式、文本高亮和自定义样式等。PyQt5 的流行性不仅在于其强大的功能,还在于其易用性和灵活性,使其成为开发复杂用户界面的理想选择。 ... [详细]
  • 在前一篇文章中,我们介绍了如何使用Requests库发送GET请求。本文将深入探讨如何通过Requests库发送POST请求,包括参数格式、请求封装等关键技巧,并通过“历史上的今天”API实例进行详细说明。 ... [详细]
  • 网站前端开发的核心理念与必备技能解析 ... [详细]
  • 本文详细解析了 Python 2.x 版本中 `urllib` 模块的核心功能与应用实例,重点介绍了 `urlopen()` 和 `urlretrieve()` 方法的使用技巧。其中,`urlopen()` 方法用于发送网络请求并获取响应内容,而 `urlretrieve()` 方法则用于下载文件并保存到本地。文章通过具体示例展示了这两个方法在实际开发中的应用场景,帮助读者更好地理解和掌握 `urllib` 模块的使用。 ... [详细]
  • 在使用 `requests` 库进行 HTTP 请求时,如果遇到 `requests.exceptions.SSLError: HTTPSConnectionPool` 错误,通常是因为 SSL 证书验证失败。解决这一问题的方法包括:检查目标网站的 SSL 证书是否有效、更新本地的 CA 证书库、禁用 SSL 验证(不推荐用于生产环境)或使用自定义的 SSL 上下文。此外,确保 `requests` 库和相关依赖项已更新到最新版本,以避免潜在的安全漏洞。 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • Python爬虫入门:深入解析HTTP协议与Requests库的应用
    Python爬虫入门:深入解析HTTP协议与Requests库的应用 ... [详细]
  • 软件测试工程师必备:全面解析Web应用的浏览器兼容性测试方法与工具
    随着市场上浏览器种类的不断增多,特别是在平板和移动设备上的普及,确保网站在各种浏览器中都能正常运行变得尤为重要。本文将深入探讨Web应用的浏览器兼容性测试方法与工具,帮助软件测试工程师全面掌握这一关键技能,以提高应用的用户体验和可靠性。 ... [详细]
  • 本文详细解析了如何利用Appium与Python在真实设备上执行测试示例的方法。首先,需要开启手机的USB调试功能;其次,通过数据线将手机连接至计算机并授权USB调试权限。最后,在命令行工具中验证设备连接状态,确保一切准备就绪,以便顺利进行测试。 ... [详细]
author-avatar
佩弦_秦子轩_188
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有