上线后出问题的原因 注意 0 和 '0' <?php #测试下注释方法 function a($a){ var_dump(empty($a)); var_dump($a==null); } //php填坑 a('0'); 原因说明 原文 测试案例 <?php #测试下注释方法 function a($a){ var_dump(empty($a)); var_dump($a==null); ...

阅读全文>>

0x01 错误原因 python manage.py makemigrations 报错提示: AttributeError: 'str' object has no attribute 'decode' 0x02 解决 直接定位到报错文件 C:\python38\Lib\site-packages\django\db\backends\mysql\operations.py 修改源码: # 头部导入 from django.utils.encoding import force_text # 报错的位置更改 q...

阅读全文>>

Django的安装 注意安装LTS版本 安装 pip install Django==2.2(卸载django:pip uninstall django) 创建第一个Django项目 命令行创建 django-admin startproject 项目名 PyCharm File -> new Project -> 左侧选第二项,右侧第一项是路径,第二项是选python版本 在...

阅读全文>>

0x01接收路径 函数式的路径判断 截取请求路径的扩展功能 0x02 代码 """ 使用socket 搭建一个简单的web服务端 函数进阶版 """ import time import socket sk = socket.socket() sk.bind(('127.0.0.1', 8080)) sk.listen() def yingying(url): data = 'ni fang wen de shi: {}'.format(url) return bytes(data, encoding='utf8') ...

阅读全文>>

0x01 需求 功能说明: 监听9090端口 解析html文件 支持http协议 0x02 代码实现 import socket sk = socket.socket() sk.bind(("127.0.0.1",9090)) sk.listen() #sk.accept() while True: conn,addr = sk.accept() data = conn.recv(1024) print(data) #http协议输出 ...

阅读全文>>

0x01 server import select import socket sk = socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() del_l = [] rlist = [sk]# 是用来让select帮忙监听的 所有 接口 # select:windows/linux是监听事件有没有数据到来 # poll: linux 也可以做select的工作 # epoll: linux 也可以做类似的工作 while 1: r,w,x = select.select(rlist,[]...

阅读全文>>

0x01 服务端 import socket sk = socket.socket() sk.setblocking(False) sk.bind(('127.0.0.1',8080)) sk.listen() l = [] del_l = [] while 1: try: conn,addr = sk.accept()# 如果是阻塞IO模型,在这里程序会一直等待。 l.append(conn)# 将每个请求连接的客户端的conn添加到列表中 except BlockingIOError: for...

阅读全文>>

0x01代码 from bs4 import BeautifulSoup import requests import time import re from multiprocessing import Process headers = { 'user-agent':'Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/61.0' } def get_url(url): res = requests.get(url) if res.status_code == 200: ...

阅读全文>>

0x01 PyCharm安装包的方法 引入图片 0x02 命令行安装 无法在pycharm中指定源 关键命令 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bs4 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests 测试有效

阅读全文>>

主要依赖的是 subprocess模块 Server端: import socket import subprocess sk = socket.socket() sk.bind(("127.0.0.1",10050)) sk.listen() conn,addr = sk.accept() while True: if getattr(conn,'_closed'): conn, addr = sk.accept() # 获取接收到的命令 exec_cmd = conn.recv(10...

阅读全文>>

主要是针对拆包的negal算法和合包的数据获取导致的问题 sever端: import socket import json import struct sk = socket.socket() sk.bind(("127.0.0.1",8001)) sk.listen() conn,addr = sk.accept() b_len_dic = conn.recv(4) len_dic = struct.unpack('i',b_len_dic)[0]# 获取到int类型字典的长度, # unpack得到的是一个元组,要取下标为0的位置 ...

阅读全文>>

0x01 思路 使用tcp协议传输文件 json解析二进制的时候,有问题, 不建议使用,推荐 pickle 0x02 代码 服务器端 # 测试文件服务器 # 实现文件的上传和下载 import socket import os import json import pickle sk = socket.socket() sk.bind(("127.0.0.1",10051)) sk.listen() #等待连接 conn,addr = sk.accept() while...

阅读全文>>

可以对比下tcp 服务端: #udp测试 import socket sk = socket.socket(type = socket.SOCK_DGRAM) sk.bind(("127.0.0.1",10050)) # 收发 while 1: msg_str,addr = sk.recvfrom(1024) print("客户端:",msg_str.decode("utf-8"),addr) msg_s = input(">>>") sk.sendto(msg_s.encode("ut...

阅读全文>>

服务端: #聊天室测试 import socket import time sk = socket.socket() sk.bind(('192.168.3.12',30031)) sk.listen() conn, addr = sk.accept() #客户端永远开启 while True: if getattr(conn,'_closed'): print("走了一个哥们") conn, addr = sk.accept() print("新来人了!!") msg_b...

阅读全文>>