丨爬取API

关于编程猫的qq and WeChat的接口我已经为大家准备好了,拿来用就好了。

QQ平台://www.codemao.cn/get-qq-code.html?appid=101253342&pid=65edCTyg&redirect_uri=https://shequ.codemao.cn/static/third_login-v3.html?product_code=community+from=https://shequ.codemao.cn/

WeChat平台://www.codemao.cn/get-weixin-code.html?appid=wxeda82dc272f7fe92&scope=snsapi_login&pid=65edCTyg&redirect_uri=https://shequ.codemao.cn/static/third_login-v3.html?product_code=community+from=https://shequ.codemao.cn/

丨原理所在

你可能想,我需要按照开放平台那样,获取第三方平台回调过来的一系列参数然后还是不能得到编程猫的数据吧?还要下载SDK?那你就错了,明确的告诉您:不需要。在登录编程猫过程中只需要抓取token(也就是cookie)就好。那么我就用Python给个例子吧!

首先,利用PyQt5搭建内置浏览器,使用第三方平台登录编程猫,登录后就获取cookie!然后就好啦!
图示如下:


丨源码案例

考虑到社区总体能力,本次分享常用Python案例来实现第三方登录。
其次我也分享一个裕语言案例来实现第三方登录。
那么,准备开始咯!

丨python案例

编程猫后援会客户端(点到猫PC版)就是用到这个方式来实现的。

首先需要导入PyQt5库。对了,这玩意还需要几个文本文件,ms.txt,cookie.txt用来存储cookie等。为了您可以正常运行请到末尾下载源码。这里仅说明。不多说,上代码:

#导入库,友情提醒:打包后文件超大的,并且效率会变低。
import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineProfile
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QMessageBox# 先来个GUI(用户窗口)。展示给用户的。
class window(QWidget):def __init__(self):super().__init__()self.setup()def setup(self):self.box = QVBoxLayout(self)                      # 创建一个垂直布局来放控件self.web = MyWebEngineView()                      # 创建浏览器组件对象self.web.resize(800, 600)                         # 设置窗口大小self.btn_get = QPushButton('登录成功之后点击我!') # 创建一个按钮。点击获取cookieself.btn_get.clicked.connect(self.get_cookie)     # 绑定按钮点击事件with open("ms.txt", "r") as f:  # 打开文件data = f.read()  # 读取文件。接下来判断是哪个平台打开if data == "qq":d = "https://www.codemao.cn/get-qq-code.html?appid=101253342&pid=65edCTyg&redirect_uri=https://shequ.codemao.cn/static/third_login-v3.html?product_code=community+from=https://shequ.codemao.cn/"elif data == "wx":d = "https://www.codemao.cn/get-weixin-code.html?appid=wxeda82dc272f7fe92&scope=snsapi_login&pid=65edCTyg&redirect_uri=https://shequ.codemao.cn/static/third_login-v3.html?product_code=community+from=https://shequ.codemao.cn/"self.web.load(QUrl(d))  #设置浏览器网址f.close()self.box.addWidget(self.btn_get)                                   # 放入按钮self.box.addWidget(self.web)                      # 再放浏览器self.web.show()                                   # 最后让页面显示出来def get_cookie(self):kk = str(self.web.url()).split("('")[1]kk = kk.split("')")[0]if "https://shequ.codemao.cn/static/" in kk:self.web.setUrl(QUrl("https://shequ.codemao.cn"))cookie = self.web.get_cookie()with open("cookie.txt", "w") as f:f.write(cookie)QMessageBox.warning(self, "注意", "登陆成功了,请手动点击右上角关闭界面")# 创建自己的浏览器控件,继承自QWebEngineView
class MyWebEngineView(QWebEngineView):def __init__(self, *args, **kwargs):super(MyWebEngineView, self).__init__(*args, **kwargs)# 绑定cookie被添加的信号槽QWebEngineProfile.defaultProfile().cookieStore().cookieAdded.connect(self.onCookieAdd)self.cookies = {}          # 存放cookie字典def onCookieAdd(self, cookie):                       # 处理cookie添加的事件name = cookie.name().data().decode('utf-8')     # 先获取cookie的名字,再把编码处理一下value = cookie.value().data().decode('utf-8')   # 先获取cookie值,再把编码处理一下self.cookies[name] = value                       # 将cookie保存到字典里# 获取cookiedef get_cookie(self):cookie_str = ''for key, value in self.cookies.items():         # 遍历字典cookie_str += (key + '=' + value + ';')     # 将键值对拿出来拼接一下return cookie_str                               # 返回拼接好的字符串if __name__ == "__main__":app = QApplication(sys.argv)w = window()w.show()sys.exit(app.exec_())input("please input any key to exit!")

好了,如果运行起来效果就和上面的图片展示就差不多了。然后cookie就会保存到cookie.txt文件里面了。

丨裕语言(iapp)案例

这玩意是一个很简单同时也很适合我经常不在电脑边的人。他是一个手机上的编辑器,从可视化设计到编码最后到打包,可以说是一键式的。点到猫APP就是用它制作的,当然等放暑假的时候再用Kotlin制作吧~

首先创建一个iyu界面,创建一个浏览器组件,id为1。然后在载入事件输入以下代码:

.改变浏览器用户代理(UA)为电脑,不然登录不了QQ,回调不到程序里面。我不是用SDK的。
gvs(1,web) .获取浏览器组件
call(null,"mjava","m.setua",web,"电脑")
uycl("#ffffffff",false)
us(1,"url","这里输入QQ或者wx的登录链接。")   .设置浏览器链接

因为改变用户代理编辑器里面没有函数,需要我们自己调用安卓API来实现。新建一个m.mjava文件,输入代码:

//导入安卓库,用来设置代理。
import android.webkit.WebSettings;
import android.webkit.WebView;public static void setua(WebView webview,String UUA)
{String ua=webview.getSettings().getUserAgentString();
webview.getSettings().setUserAgentString(UUA);
}

好了,那我们再回到iyu界面点击浏览器然后在浏览器事件里面点击网址加载完成时,输入代码:

ug(1,"url",a)  .获取浏览器网址
f(a?"https://shequ.codemao.cn/static/")   .如果网址包含
{f(a?"https://www.codemao.cn/get-")
{}
else{us(1,"url","https://shequ.codemao.cn")
ug(1,"url",url)cls("android.webkit.CookieManager",anyi)    .导入安卓webkit接口对象。
javax(ilovewss,"CookieManager",anyi,"getInstance")  .调用函数,获取cookie。
javax(mcookie,ilovewss,anyi,"getCookie","String",url)
syso(mcookie)  .打印到控制台.获取到cookie再提交数据获取用户数据然后显示出来
t()
{s a = "https://api.codemao.cn/web/users/details"
hs(a, null, "utf-8", mcookie,  "User-Agent=Mozilla/5.0 (iPad; U; CPU OS 6_0 like Mac OS X; zh-CN; iPad2)||accept=*/*||accept-language=zh-CN",b)ufnsui()
{f(b!=null)
{tw(b)
}else
{tw("登录失败")
} } } } }

嗯,到目前为止已经搞定了。那么运行一下就没问题了,对了您仔细发现第三方平台登录可能会限制输入账号密码登录,需要扫码,如果程序可在后台运行就直接截图到qq扫码登录就好了。当然也可以分屏扫码。当然。浏览器还可以长按保存图片,隐藏缩放按钮了,当然也不重要,我就不放代码了,我觉得你们已经头晕了。红红火火恍恍惚惚!

丨源码下载

Python源码:https://vifan.lanzoux.com/iLjfrxaadwd
裕语言源码:https://vifan.lanzoux.com/iHiPUxaaeli (解压后导入到iapp程序里)

干货!自己的程序利用 编程猫 第三方登录获取用户token相关推荐

  1. 实现新浪微博第三方登录获取用户信息

    第一步:创建Android项目下载新浪sdk 下载地址:https://github.com/sinaweibosdk/weibo_android_sdk 里面包含签名工具和新浪官方的debug.ke ...

  2. php支付宝第三方授权,原生 PHP 实现支付宝 App 第三方登录获取用户信息,_PHP_ 少侠科技...

    详细内容 背景 App 项目要求实现第三方 微信 和 支付宝 登录,微信可以直接在 App 端完成认证拿到用户信息,支付宝则需要后端获取. 流程 1.服务端先拿到 App 端 调用 支付宝 SDK 所 ...

  3. 程序员如何更好地获取用户信息?

    作者 | 菜菜 责编 | 郭芮 YY妹:菜菜君,我又来啦.菜菜君,我又来啦菜菜君,我又来啦 菜菜:又有什么事吗? YY妹:我按照你说的已经把网站认证写完了,而且效果还不错. 菜菜:恭喜你,下次面试又多 ...

  4. 微信小程序结合腾讯位置服务获取用户所在城市信息

    背景 实现小程序进去后获取用户当前所在城市,然后显示该城市的数据,并且显示在导航栏和 Tab上. 微信小程序中,我们可以通过调用wx.getLocation()获取到设备当前的地理位置信息,这个信息是 ...

  5. 【微信小程序腾讯位置服务】获取用户所在城市信息实战

    背景 实现小程序进去后获取用户当前所在城市,然后显示该城市的数据,并且显示在导航栏和 Tab上. 微信小程序中,我们可以通过调用wx.getLocation()获取到设备当前的地理位置信息,这个信息是 ...

  6. 微信小程序开发笔记 进阶篇④——getPhoneNumber 获取用户手机号码(小程序云)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.云函数 五.程序流程 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机号码. 但是,因 ...

  7. 微信小程序开发笔记 进阶篇⑤——getPhoneNumber 获取用户手机号码(基础库 2.21.2 之前)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.后端java 五.程序流程 六.参考 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机 ...

  8. 微信小程序开发笔记 进阶篇⑥——getPhoneNumber 获取用户手机号码(基础库 2.21.2 之后)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.后端java 五.程序流程 六.参考 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机 ...

  9. 微信小程序开发之——用户登录-获取用户信息(5),意外收获字节跳动内部资料

    {{userInfo.nickName}} {{userInfo.city}} {{userInfo.gender0?"未知":userInfo.gender1?"男&q ...

最新文章

  1. 2021第12届蓝桥杯省赛 -- 填空题:试题B:直线
  2. 技术07期:图计算,让数据间的关系无处可藏【社区分切篇】
  3. 阿里异地多活与同城双活的架构演进
  4. SAP AUT10 查看修改记录
  5. python renamer模块_【免费工具集】4种免费Maya Python脚本集合:重命名、检查UV、分配重叠模型、选边,尽在EL Tool Pack...
  6. void ,NULL与0的区别联系
  7. 使用delegate类型设计自定义事件
  8. windows2016服务器优化,Windows Server 2012 服务器优化图文方法
  9. Leetcode--23.合并K个排序链表(Java)
  10. jquery获取动态表格行号_jquery得到表格当前行数据
  11. 80x86段寻址的原因
  12. word:回车替换成空格
  13. 【题解】【PAT甲】1118 Birds in Forest (25 分)(并查集)
  14. linux笔记本触屏方向反了,[已解决]如何设置触摸板上下滚屏反转(像mac一样,和windows是反的)...
  15. python练手项目
  16. 证券行业智慧化转型思考
  17. 传统企业怎样克服互联网焦虑症
  18. 《中国民生银行天眼日志平台架构演进的平凡之路》阅读有感
  19. 【教程汇总】英文关键词发掘与整理
  20. PyCharm打包可执行文件方法

热门文章

  1. 我们无法创建新的分区,也找不到现有的分区
  2. 训练数据过度拟合拟合不足
  3. coderwhy--前端知识整合包--htmlcss08
  4. Steam流-方法引用
  5. 如何消除li的黑点html,Html中CSS之去除li前面的小黑点,和ul、LI属性方法
  6. antd DatePicker 时间控件 限制选择当天之前时间,今天之前时间
  7. MBG真香 Spring Boot集成Mybatis Generator插件
  8. PPP与PPPoE协议
  9. @ComponentScan包扫描机制
  10. (vue)h5 通过百度地图(原生) 获取当前位置