python
一只快死的猿
接python外包和爬虫单子
展开
-
自搭的基于Frida一体化采集框架
看到就是赚到原创 2022-05-08 18:50:25 · 1694 阅读 · 1 评论 -
python实现ssh连接远程服务器(密码和密钥)
ssh远程连接demo原创 2021-08-18 16:20:30 · 6729 阅读 · 0 评论 -
Hook入门小Demo
frida, hook常用的一些语法原创 2021-06-26 20:09:08 · 2107 阅读 · 0 评论 -
Celery任务调度模板
Celery任务调度使用:https://docs.celeryproject.org/en/stable/目录路结构:其中celerybeat-schedule.bak、celerybeat-schedule.dat、celerybeat-schedule.dir是任务调度过程中产生过的文件。setting是整个架构的配置项。start_celery是启动任务调度等待队列,等待任务分发过来。tasks是任务分发过来后的具体任务执行内容。other_test是任务调度过程中产生的一些数据和状态原创 2021-06-15 12:44:55 · 2274 阅读 · 4 评论 -
笔记:在Linux的CentOS6.9系统下安装Python3.7
一、在VMware中创建好虚拟机后,用yum下载安装包发现无法下载:【已解决】: 备份配置文件,防止以后出错后不好恢复: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 执行下面命令,新建CentOS-Base.repo配置: vim /etc/yum.repos.d/CentOS-Base.repo 复制粘贴如下命令 [centos-office]原创 2021-06-07 14:28:39 · 1778 阅读 · 0 评论 -
排序算法(三):插入排序详解
前言: 最近换工作,面试稍微大一点的厂都会被问到算法和数据结构这块知识,得空自己总结一下吧,总结不到位希望大佬指正哈。情景记忆: 插入排序其实蛮好记的,看排序的名称也很容易联想,“插入”是这个排序的核心思想,那插入的时候是怎么个插入法?你只要知道它是从无序的数据中插入到有序的序列中,你可以联想到体育老师再第一次上课的时候总会给全体同学排队的场景,先拉一个同学站号,再拉第二个与第一个比较身高来确定第二个的位置,再拉第三个与前面两个比较身高来确定位置。。。。。。逻辑实现: 以上的记忆方法和亲切,这样就很容原创 2021-05-04 18:30:50 · 1785 阅读 · 0 评论 -
密码学(一):RSA加密长文
简介:RSA简介: RSA加密是一种非对称加密,至于它底层实现比较复杂,说实话我说不清楚可能把你带沟里去了,感兴趣的同学可以去看看这篇博文:点击这里,今天我们要说的不是他的实现原理,你们用RSA进行一次性加密长文是无法实现的,我们今天重点的话题是用它加密长文!!!RSA组成:RSA是由公钥和私钥组成的一对密钥,密钥分成公钥和私钥,公钥是公开的而私钥自己持有的,私钥是用来加密的,加密后的内容叫做密文,公钥是给别人用来对你加密后的密文进行解密,解密后的内容叫做明文。正文:一、生成密钥代码:.原创 2021-04-27 21:38:00 · 4395 阅读 · 0 评论 -
Python操作Excel文件
说明: 这是一个处理Excel文件的类,后面开发中又遇到会不断完善。import xlrdimport xlwtfrom xlutils.copy import copyclass MakeExcel(object): def __init__(self, xls_name, sheet_name, path): """ 实例化接收三个参数 :param xls_name: 字符串,excel文件的名称 :param she原创 2021-04-26 09:45:17 · 2182 阅读 · 0 评论 -
python处理时间的工具
说明: 这是一个处理时间的工具类,开发中又遇到时间处理问题会不断积累完善。class TimeTool(object): def __init__(self): pass def seconds_to_time(self, sec): """ 把秒数转换为时间格式 :param sec: 秒数 :return: str """ m, s = divmod(sec, 60)原创 2021-04-26 09:42:14 · 1818 阅读 · 0 评论 -
排序算法(二):选择排序详解
前言: 最近换工作,面试稍微大一点的厂都会被问到算法和数据结构这块知识,得空自己总结一下吧,总结不到位希望大佬指正哈。情景记忆: 选择排序其实蛮好记的,看排序的名称就很容易联想,“选择”是这个排序的核心思想,那选择的时候是怎么选择的呢,其实要记住这个排序你就联想择优或者淘汰机制就很容易记住:择优是从一堆参差不齐的同种物品中选择最好的,比如有一对苹果,有大有小,我们择大而食;淘汰就是从一堆参差不齐的物品中淘汰最烂的,比如还是有一堆苹果,这次是腐烂程度不同的苹果或者快要腐烂,我们要从中选择腐烂程度最大的苹果丢原创 2021-04-25 21:19:42 · 1887 阅读 · 2 评论 -
排序算法(一):冒泡排序详解
前言: 最近换工作,面试稍微大一点的厂都会被问到算法和数据结构这块知识,得空自己总结一下吧,总结不到位希望大佬指正哈。情景记忆: 其实冒泡排序学校都学烂了的,但是很奇怪的是为什么有些时候过一段时间就会忘记实现逻辑呢?那是没有经常使用,说实话工作中一般不会用到的,但是我们可以用场景记忆把他刻在脑中:你只要又一些生活小常识就可以记得很牢固了,把它比喻为鱼吐泡泡的场景,鱼在水底下吐的泡泡刚吐出来的时候是很小的,随着气泡的上升,气泡就会越来越大,最终浮出水面破掉;这个场景就十分像我们的冒泡排序从小到大排序的思维了原创 2021-04-16 22:35:12 · 1833 阅读 · 0 评论 -
pyhton读取.conf和.ini文件
没啥可说的,比较简单,直接上demo:conf.conf文件:[info]name=zhangsanage=20class=3年1班addr=火星phone=10086[score]yuwen=99shuxue=99yingyu=98[test]num=13conf.ini文件:[info]name=lisiage=20class=3年2班addr=水星phone=10000[score]yuwen=98shuxue=98yingyu=99[tes原创 2021-01-08 10:40:28 · 2823 阅读 · 0 评论 -
threading.local隔离作用
提要: 在Python多线程当中,其资源是共享的,我们通常在使用共有资源时会采取线程锁来确保共有资源在修改的时候达到我们的预期,避免出现问题。但是在Python中还有第二种方案,就是这次要说的threaing.local,它的理念其实跟flask的上下文管理器相似,就是每次线程要处理共有的资源时,local就会帮线程复制一个共有的资源供线程使用,而复制出来的资源是独立的,并不会被其他的资源修改后而影响,直到线程的介绍。多线程: 我们先看下下面的代码,我们的预期结果是10个线程都有自己的对应值:0、1、2原创 2020-12-31 12:35:32 · 2597 阅读 · 0 评论 -
某宝的登录密码加密--password2
提要: 这些天在搞天猫的秒杀,但是很奇怪的是:在我自己电脑上跑的时候时间是0.5到1秒的时间,居然秒杀失败,然后别人写的秒杀时间是4秒左右都可以秒杀成功!这个我很不能接受。下面说一下我的思路:1.提前5分钟登录淘宝获取登录后的cookie,保存。2.设置秒杀时间(一般在快到秒杀的前3秒),一旦到时间激活程序,带上cookie模拟协议,执行秒杀流程。3.然后利用死循环一直请求购买接口。4.在秒杀程序激活之前已经把所有要的参数什么的都准备清楚了,只要一到时间就可以进行购买了。以上就是整体的流程和思路,原创 2020-12-05 13:20:49 · 6778 阅读 · 0 评论 -
基于python的简单的接口实现
前言: 在程序开发中难免会有对外开放api接口供他人调用,今天我来看一下简单的实现放方式,只是简单的实现,并不是很深入,我是利用python下的flask实现的简单接口。代码实现:#!/usr/bin/python3# encoding:utf-8import flask, json# 实例化api,把当前这个python文件当作一个服务,__name__代表当前这个python文件api = flask.Flask(__name__)# 'index'是接口路径,methods不写,默原创 2020-11-20 14:59:01 · 3288 阅读 · 0 评论 -
国内镜像源
豆瓣 ··············· http://pypi.douban.com/华中理工大学 ········ http://pypi.hustunique.com/山东理工大学 ········ http://pypi.sdutlinux.org/中国科学技术大学 ···· http://pypi.mirrors.ustc.edu.cn/阿里云 ············· https://mirrors.aliyun.com/pypi/simple/清华大学 ··········· http原创 2020-10-10 20:41:51 · 250 阅读 · 0 评论 -
Flask进阶篇(三)解决循环导包问题
目录结构:说明:1.当导入cart包时就会自动执行初始化文件,可以把包理解为一个类,在实例化的时候一定会执行__init__函数。2.模板文件和静态文件的查找顺序:根目录下面的templates先查找如果没有再去cart下的templates中查找。主程序代码:from flask import Flaskfrom templates.test import indexfrom cart import cartapp = Flask(__name__)"""方案一:装饰器传参的方式原创 2020-08-15 16:27:00 · 1938 阅读 · 0 评论 -
存储(三)OSS2存储,解决mysql索引指纹匹配慢的问题
背景: 在存储二中我模拟实现了低配的百度网盘,在指纹存储匹配实现的过程中根本就没有考虑到后期运行速度的问题(因为自己小白还没有什么实质性的经验),最近在使用的过程中发现运行的速度越来越慢,如果是这样的话,那么之后公司的后端存储用户量一旦大起来,存储频率高起来,那之前的努力就没有什么用处了。在正文开始之前先简单阐述下存储二中的实现逻辑:1、利用爬虫爬取某网站的图片url,模拟用户使用APP上传图片。2、再获取图片内容,然后做md5和sha1加密。3、把加密后的密文叫做指纹,指纹是唯一存在的,拿着指纹原创 2020-08-14 10:52:34 · 4100 阅读 · 0 评论 -
Flask进阶篇(二)数据库操作
import sqlalchemy as dbfrom sqlalchemy.orm import sessionmaker, relationshipfrom sqlalchemy.ext.declarative import declarative_baseengine = db.create_engine('mysql+pymysql://xuqien:jscH8PtwfCScAdjR@39.99.136.116:3306/test')# 创建数据库sqlalchemy工具对象Bas原创 2020-08-15 16:48:02 · 1116 阅读 · 0 评论 -
Flask进阶篇(一)表单渲染
from flask import Flask, render_template, redirect, url_for, sessionfrom flask_wtf import FlaskFormfrom wtforms import StringField, PasswordField, SubmitFieldfrom wtforms.validators import DataRequired, EqualToapp = Flask(__name__)# 混淆,CSRF需要密钥,sess原创 2020-08-08 14:38:33 · 1242 阅读 · 0 评论 -
Flask入门篇(七)模板和自定义过滤器
from flask import Flask, render_templateapp = Flask(__name__)"""模板使用"""@app.route("/index")def index(): data = { "age": 18, "city_dict": {"city1":"putian", "city2":"fuzhou"}, "num_list": [1, 2, 3, 4, 5] } # rende原创 2020-08-08 10:49:04 · 1085 阅读 · 0 评论 -
浅谈python的上下文管理
上下文管理的作用:1.操作(创建/获取/释放)资源;2.处理异常;上下文管理的好处:1.提高代码的复用率;2.提高代码的优雅度;3.提高代码的可读性;好,带着上下文管理器的好处和作用进入正题…什么是上下文管理器: 上下文管理器是指在一段代码执行之前执行另一段代码,用于一些预处理工作;执行之后再执行另一段代码,用于一些清理工作。可以理解为一个助理、管家,你在做什么事情之前他们会帮你安排好一切和之后的善后。在平时敲代码过程中我们经常用到下面这段代码:with open('test.txt',原创 2020-08-07 16:31:46 · 3849 阅读 · 0 评论 -
Flask入门篇(六)请求钩子和上下文管理
from flask import Flask, request, redirect, url_for, g, session, make_responseapp = Flask(__name__)app.config["SECRET_KEY"] = "asd44sSADdsaasdlj87""""上下文管理解析1:在flask中请求上下文对象有request、session,应用上下文对象有current_app和g解析2:g在处理请求时,用于临时存储的对象,特别注意每次新请求都会重置原创 2020-08-07 14:30:20 · 1422 阅读 · 0 评论 -
Flask入门篇(五)cookie和session操作
from flask import Flask, sessionapp = Flask(__name__)"""cookie操作"""# 设置cookie@app.route("/login_success")def login_success(): response = make_response("login success") response.set_cookie("t", "aaaaa") response.set_cookie("n", "12345",原创 2020-08-06 17:25:32 · 1543 阅读 · 0 评论 -
Flask入门篇(四)自定义异常和响应信息
from flask import Flask, abort, request, Response, make_responseapp = Flask(__name__)"""abort方法类似于raise,立即终止函数并返回特定的信息给前端解析1:abort函数可以接收http标准状态码解析2:abort函数可以接收响应头,即Response对象"""@app.route("/login")def login(): uid = request.form.get("uid")原创 2020-08-06 14:45:25 · 1833 阅读 · 0 评论 -
Flask入门篇(三)请求信息设置、初识abort
from flask import Flask, requestapp = Flask(__name__)"""获取页面请求的数据,常用的有:1.表单请求2.json字符串3.url中的参数即查询字符串Query"""@app.route("/index", methods=["GET", "POST"])def index(): # 表单请求,request.form是一个类字典 name = request.form.get("name") # 获取第一个原创 2020-08-05 17:21:30 · 1753 阅读 · 0 评论 -
Flask入门篇(二)路由配置
from flask import Flask, redirect, url_forfrom werkzeug.routing import BaseConverterapp = Flask( __name__, static_url_path="/python", static_folder="static", template_folder="templates")@app.route("/index")def index(): return '原创 2020-08-04 17:55:54 · 2735 阅读 · 0 评论 -
Flask入门篇(一)参数配置
from flask import Flask# import test"""作用:创建flask的应用对象解析1:__name__表示当前的模块名字,即test.py print(__name__) 打印__main__看不太出来。如果导入test就可以很明显__name__的作用了解析2:app会以当前模块所在的目录作为根目录,即flask框架解析3:默认这个目录中的static为静态文件,templates模板文件解析4:static_url_path是指定静态文件名解析5原创 2020-08-04 16:49:09 · 2418 阅读 · 0 评论 -
存储(二):OSS2模拟低配百度网盘存储(优化存储)
在存储(一)中,已经可以把图片存储到阿里云产品的oss存储服务器上边了。问题:如果真是像存储(一)中所实现的功能:用户来一个图片、文件、视频或者其他的待存储对象,我就要给他存储到oss服务上边,这样存储空间的占用速度非常快,在大数据的时代下根本就无法满足需求,如果采用扩容,你无论阔多大,以这样的用户存储速度都不够用,而且存储服务器的高额存储费用可不是开玩笑的。分析:如果我们认真观察网上的数据,其实很大一部分数据都是重复的,比如QQ空间微信朋友圈等等,有没有发现好友有时候发的图片可能是之前用过的,即重原创 2020-08-01 11:09:57 · 5352 阅读 · 0 评论 -
快速判断一条数据是否在数据库中
判断数据库总是否存在某一条数据方法有二:一、 获取数据库中所有的数据在进行判断,在用in判断是否在返回的结果中,这种方法类似于下面这种场景:s_list = [i for i in range(100000)]a = 9999if a in s_list: print(1)else: print(2)如果数据是少量的具有可行性,如果数据一旦打起来的话就会出现以下错误:最近大概要处理10亿条数据,于是模拟了10亿数据内存直接蹦了。二、 在查询语句上面做优化,我网上逛了一圈,原创 2020-07-31 16:21:30 · 11921 阅读 · 0 评论 -
存储(一):阿里云对象存储OSS2,python_SDK
有多种开发语言SDK,先上SDK连接:https://help.aliyun.com/document_detail/52834.html?spm=a2c4g.11186623.4.4.1efe585eCLlXR5前提:已开通OSS服务,已创建Accesskey。其他的就不多说了,连接文档里面的介绍和使用比我说的肯定要好太多了,我就分享一下我使用过程中遇到的一些坑和思想吧。首先说下安装问题,OSS Python SDK适用于Python 2.6、2.7、3.3、3.4、3.5、3.6版本,但是我服原创 2020-07-30 16:56:30 · 6976 阅读 · 0 评论 -
【解决】python连接mysql数据库过段时间就会断开pymysql.err.OperationalError
问题:1.python中的数据库连接没有长连接的概念,之前我就踩过这个坑:用最基础的连接方法连接mysql数据库,然后往数据库插入数据,过一会儿就报错了(错误的代码我忘了,后面有遇到场景再重现一下),大概的意思是数据库连接已断开。2.python基础连接方式进行数据库连接及增删改查操作,每次连接mysql请求时,都是独立的去请求访问,比较浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响。解决办法:问题1中如果不在意数据库性能的话最简单的就是简单预处理一下:try:原创 2020-07-30 15:12:46 · 13345 阅读 · 6 评论 -
python爬虫之QQ空间登陆获取信息(超级详细)
一、背景: 前几天收到了一个需求:获取QQ好友,QQ群,QQ群友的账号。但是我却抓不到QQ程序的包就很尴尬,我觉得应该是QQ程序之间的通讯协议大部分不是HTTP或者HTTPS,而我用的是Fillder所以找不到包,但是不影响我完成需求的进度,我找了QQ的大部分相关应用,最后在QQ空间找到了能满足这个需求的数据,于是我换了个思路和方法,去QQ空间里面抓数据。二、分析: QQ空间一般是两种登陆方式:一是账号密码登陆,二是扫码登陆,领导要求的是扫码登陆,于是我就做扫码登陆把。经过反复抓包查看数据,发现登陆的原创 2020-07-30 12:07:06 · 11570 阅读 · 1 评论 -
【解决】Requests库的SSL警告:InsecureRequestWarning: Unverified HTTPS request is being made.
Requests库的SSL警告:InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warningsInsecureRequestWarning)原因: 这个警告原因是你请求url的时候原创 2020-07-30 10:04:41 · 13385 阅读 · 1 评论 -
利用代理IP组建代理IP池
网上购买代理IP十分便宜,但是代理IP被爬虫使用的时候要以{“http”: “http://58.218.200.248:2055”}这种字典的形式才可以被使用,所以前面的key命名还蛮头疼的,以下是一个获取代理ip的方法并可以保持为爬虫直接使用的格式,代码是可以直接被使用的哦~~# coding:utf-8"""获取代理IP接口,请求IP构造IP池,IP池是一个json字符串写入并以列表嵌套字典的格式保存到ip_pool文件下"""import requestsimport jsonimp原创 2020-07-21 11:57:06 · 6721 阅读 · 0 评论 -
获取Cookies的name和value
获取一个网站cookie的name和values:# coding:utf-8"""获取请求信息的cookie值,反回一个可迭代的对象"""from urllib import requestfrom http import cookiejardef get_cookies(url): # 声明一个CookieJar对象实例来保存cookie cookie = cookiejar.CookieJar() # 利用urllib.request库的HTTPCookieP原创 2020-07-21 11:41:37 · 7833 阅读 · 0 评论