LCyee

LCyee 查看完整档案

填写现居城市桂林电子科技大学  |  网络工程 编辑  |  填写所在公司/组织 www.codeyee.com 编辑
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

LCyee 赞了回答 · 6月16日

解决如何在移动端H5网站实现微信授权登录?(不通过公众号)

都是基于公众号的

关注 3 回答 3

LCyee 赞了回答 · 6月16日

解决如何在移动端H5网站实现微信授权登录?(不通过公众号)

这个就是公众号登录。

抓下包就看到了。

image.png

不但是公众号登录,而且从 scope 看,还是非静默登录。

关注 3 回答 3

LCyee 提出了问题 · 6月16日

解决如何在移动端H5网站实现微信授权登录?(不通过公众号)

问题描述

已经根据 微信官方文档 进行操作,但目前只能实现扫码后进入到授权页面(感觉只是为PC端准备的接口)在手机内打开网页无法实现直接弹出授权提示,只能通过手机摄像头扫码后才能进入到授权页面,如下图
image.png

预期结果

  • 在手机内访问授权链接时直接弹出授权提示,如下图

问题出现的环境背景及自己尝试过哪些方法

  • 已经在微信开放平台上注册了 “网站应用” 并拿到了Appid和微信登录权限
  • 微信开放平台账号已通过开发者资质认证
  • 查了一些案例,基本上都是要求通过微信公众号才能实现移动端直接弹出授权,例如 案例,但是我发现在微信访问csdn等网站,点击登录可以直接弹出的是“该网站要求授权”,如下图所示,而不是 “该网站由XXX公众号开发” 的提示,可以断定应该不是强制要求一定要对接微信公众号,但没有找到思路,只能求助大佬们。

关注 3 回答 3

LCyee 提出了问题 · 3月30日

django manage.py migrate 生成了django_migrations 但是model表缺未生成

问题描述

执行 python manage.py migrate 运行成功且不报错信息,在数据库中出现了 django_migrations 表,但是自定义的model表却未生成

image.png

image.png

image.png

问题出现的环境背景及自己尝试过哪些方法

尝试删除 django_migrations 表和 app 内的 migrations 文件,重新执行生成,结果还是与上述的一样。。

相关代码

django工程内配置了两个mysql数据库,并且已设置了路由到指定APP,
配置如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'gbh',  # 你的数据库名称 数据库需要自己提前建好
        'USER': 'root',  # 你的数据库用户名
        'PASSWORD': 'xxx',  # 你的数据库密码
        'HOST': '192.168.1.216',  # 你的数据库主机,留空默认为localhost
        'PORT': '3306',  # 你的数据库端口
        'OPTIONS': {'init_command':'SET sql_mode="STRICT_TRANS_TABLES",storage_engine=INNODB;'}
    },
    'gbh': {   # 配置第二个数据库节点名称
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'gbh_info',  # 你的数据库名称 数据库需要自己提前建好
        'USER': 'user',  # 你的数据库用户名
        'PASSWORD': 'xxx',  # 你的数据库密码
        'HOST': '192.168.1.216',  # 你的数据库主机,留空默认为localhost
        'PORT': '3306',  # 你的数据库端口
        'OPTIONS': {'init_command':'SET sql_mode="STRICT_TRANS_TABLES",storage_engine=INNODB;'}
    },
}

# 数据库路由规则
DATABASE_ROUTERS = ['WechatServer.database_router.DatabaseAppsRouter']

DATABASE_APPS_MAPPING = {
    'apps.gbh_wechat_api':  'gbh',
    'apps.info_binding':  'default',
}

app model表

from django.db import models
# Create your models here.class


class api(models.Model):
    id = models.AutoField(primary_key=True)   #  随机生成的ID
    test = models.CharField(max_length=10, null=True, default=None)

migrations 已生成
image.png

# Generated by Django 3.0.4 on 2020-03-30 16:51

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='api',
            fields=[
                ('id', models.AutoField(primary_key=True, serialize=False)),
                ('test', models.CharField(default=None, max_length=10, null=True)),
            ],
        ),
    ]

你期待的结果是什么?实际看到的错误信息又是什么?

预期是成功在数据库内生成 api 表, 有经验的老铁看下,找了几个小时了,翻遍了文章也没找到问题所在

关注 2 回答 1

LCyee 提出了问题 · 3月3日

Python3 如何使用asyncio库在调用第三方模块(存在IO等待)的情况下实现协程?

问题描述

demo中有一个 task_check 的模块,底层是用urllib实现,请问如果要实现使用 asyncio 库实现协程操作,需要修改这个模块的底层代码吗?如何修改? 往大佬指点

问题出现的环境背景及自己尝试过哪些方法

平时都是使用 gevent 库和 monkey.patch_all() 实现协程,但发现 gevent 在调度时使用的是 DummyThread 进行操作,不知是否对性能有影响,如下图
image.png

所以想使用 asyncio 模块来实现协程, 但 asyncio 没有类似 monkey.patch_all() 这种模块来实现底层的替换, 翻阅了各类博文也没能理解, 望大佬们指点

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
demo 代码如下

import datetime
import asyncio

class DEMO:
    def __init__(self):
        self.true_count = 0
        self.false_count = 0

    async def task(self):
        from module import task_check
        status = task_check.connect("131.114.2.134")["status"]
        if status:
            self.true_count+=1
        else:
            self.false_count += 1
        print(threading.currentThread().name,datetime.datetime.now(), "task is done, status is", status)

if __name__ == "__main__":
    start = datetime.datetime.now()
    demo = DEMO()
    task_count = 300

    # 批量添加asyncio协程
    tasks = [asyncio.ensure_future(demo.task()) for _ in range(task_count)]
    loop = asyncio.get_event_loop()
    loop.run_until_complete(asyncio.wait(tasks))

    # 反馈数据
    end = datetime.datetime.now()
    print("[+] runtime: %s available: %s %%" %(end - start, (demo.true_count / task_count) * 100))

你期待的结果是什么?实际看到的错误信息又是什么?

使用 asyncio 库调用第三方模块实现协程切换, 而非 aiohttp 这种已实现异步操作的模块.

关注 1 回答 0

LCyee 赞了回答 · 1月22日

python多线程get请求报错urllib3.connectionpool Failed to parse headers

用这种写法试试

with requests.session() as req:
    pass

关注 2 回答 1

LCyee 提出了问题 · 1月18日

python多线程get请求报错urllib3.connectionpool Failed to parse headers

程序需求简述

使用多线程批量向指定的一些url发送get请求(这些url都不重复)

问题描述

在requests请求中已经设置了timeout为3秒,程序运行后先是正常输出,然后在一段时间内没输出请求结果,观察发现进程中有大量线程未关闭,程序运行一段时间后出现标题所述的错误(详细错误信息已在下方贴出),查阅了相关案例可能是keep_alive的问题,于是设置了 req.keep_alive = False 但是无果

各位前辈帮忙看下是啥原因造成的,万分感谢,问题可能描述得不清楚,请见谅

程序代码贴在最后了

详细错误信息如下

URL内容使用XXX替换了,报错时内容中的URL是能正常访问的
2020-01-18 02:33:55,363 urllib3.connectionpool [WARNING] - Failed to parse headers (url=https://XXX/XXX.conf): [MissingHeaderBodySeparatorDefect()], unparsed data: "Mí\x99\x81M\x8fMIû+Pµ!ó:aç\x96\x90QÔIhvNOÄÍùS\x16.\x03UiqØÉó\x0c\x9b®'Oj\x15þ\x06\x1b\x93\x18\x8dçøÈþjw\x89è\\\x0bõ\x7f\x10Q*¢\xa0\x06ÿm/\x02^(aÐ\x12\x9b˯ÈkfÙSÉ\x81\x9a8§\xa0\\\x9938g\x88Âdñ=ÊaÑuv®\x8e^õ2\x9a»»\x1cÎê¾ásóÆðAÅ:÷ú¯·2®\x1fyä{¼ãÀ¢¦,ÃR7L\x9ff!`\x15\x81<©*»{ï(+.ÐW½Ñ»ß\x8dÅ.\x1c¨·¢\x91àr´cÙÆ=-ÄÜ¡;HttpOnly;Path=/;Secure\r\nSet-Cookie: NSC_AAAC=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT;Secure\r\nSet-Cookie: NSC_EPAC=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT;Secure\r\nSet-Cookie: NSC_USER=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT;Secure\r\nSet-Cookie: NSC_TEMP=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT;Secure\r\nSet-Cookie: NSC_PERS=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT;Secure\r\nSet-Cookie: NSC_BASEURL=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT;Secure\r\nSet-Cookie: CsrfToken=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT;Secure\r\nSet-Cookie: CtxsAuthId=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT;Secure\r\nSet-Cookie: ASP.NET_SessionId=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT;Secure\r\nSet-Cookie: NSC_TMAA=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT\r\nSet-Cookie: NSC_TMAS=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT;Secure\r\nSet-Cookie: NSC_TEMP=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT\r\nSet-Cookie: NSC_PERS=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT\r\nSet-Cookie: NSC_AAAC=xyz;Path=/;expires=Wednesday, 09-Nov-1999 23:12:40 GMT\r\nConnection: close\r\nContent-Length: 551\r\nCache-control: no-cache, no-store, must-revalidate\r\nPragma: no-cache\r\nContent-Type: text/html\r\n\r\n"
Traceback (most recent call last):
  File "D:\soft\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 441, in _make_request
    assert_header_parsing(httplib_response.msg)
  File "D:\soft\Python\Python37\lib\site-packages\urllib3\util\response.py", line 71, in assert_header_parsing
    raise HeaderParsingError(defects=defects, unparsed_data=unparsed_data)
urllib3.exceptions.HeaderParsingError: [MissingHeaderBodySeparatorDefect()], unparsed data: "Mí\x99\x81M\x8fMIû+Pµ!ó:aç\x96\x90QÔIhvNOÄÍùS

程序代码


def checking(url):
    # 业务逻辑
    try:
        url_new = '%s/xxx.html' % url
        header = {
            'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
        }
        req = requests.session()
        req.keep_alive = False  # 尝试关闭urllib中的keep-alive
        res = req.get(url_new, headers=header,timeout=3, verify=False, allow_redirects=False)

        if 'target_text' in str(res.content):
            logger.info('[+] task %s is SUCC' % (url))
        else:
            logger.info('[-] task %s is FAIL' % (url))
    except:
        pass


def get_url_list(filename):
    url_list = []
    with open(filename, 'r', encoding='utf-8') as file:
        while True:
            url = file.readline().strip()
            if not url:
                break
            else:
                if url != '': url_list.append(url)
                print('\r已读取 %s' % len(url_list), end='', flush=True)
    print('')
    return url_list

if __name__ == '__main__':

    # 读取url
    url_list = get_url_list('data/host.txt')
    thread_list = []

    for url in  url_list: 
        thread = Thread(target=checking, args=(url,)).start()
        thread_list.append(thread)
        time.sleep(0.05)

    for th in thread_list:
        th.join()

    print('全部线程结束')

关注 2 回答 1

LCyee 关注了标签 · 2019-09-26

vue.js

Reactive Components for Modern Web Interfaces.

Vue.js 是一个用于创建 web 交互界面的。其特点是

  • 简洁 HTML 模板 + JSON 数据,再创建一个 Vue 实例,就这么简单。
  • 数据驱动 自动追踪依赖的模板表达式和计算属性。
  • 组件化 用解耦、可复用的组件来构造界面。
  • 轻量 ~24kb min+gzip,无依赖。
  • 快速 精确有效的异步批量 DOM 更新。
  • 模块友好 通过 NPM 或 Bower 安装,无缝融入你的工作流。

官网:https://vuejs.org
GitHub:https://github.com/vuejs/vue

关注 96332

LCyee 关注了标签 · 2019-09-26

python

Python(发音:英[ˈpaɪθən],美[ˈpaɪθɑ:n]),是一种面向对象、直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句。

Python支持命令式程序设计、面向对象程序设计、函数式编程、面向切面编程、泛型编程多种编程范式。与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理存储器使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。

Python的主要参考实现是CPython,它是一个由社区驱动的自由软件。目前由Python软件基金会管理。基于这种语言的相关技术正在飞快的发展,用户数量快速扩大,相关的资源非常多。

关注 102700

LCyee 关注了用户 · 2019-09-26

OpenWrite资讯 @niwajiang_5c99fa77b0858

关注 2651

认证与成就

  • 获得 0 次点赞
  • 获得 3 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 3 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2019-09-26
个人主页被 75 人浏览