自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 收藏
  • 关注

原创 flaresolverr环境搭建

具体来说,FlareSolverr 就是一个被动式的浏览器渲染服务,它使用了 Headless Chrome 和 Puppeteer 技术来模拟人工操作浏览器的行为,并通过自定义的 JavaScript 脚本和与浏览器进行交互,最终获取网页中的数据或跳过反爬虫策略。在使用 FlareSolverr 时,你需要先启动一个 FlareSolverr 服务器,然后通过发送 HTTP 请求的方式来获取解决后的结果,用来过Cloudflare非常好用。

2023-06-27 15:38:14 3475

原创 搭建selenoid环境

shmSize浏览器共享内存大小,默认值256Mb,设置的太小可能出现不稳定的情况(浏览器崩溃、闪退等),设置的太大占用的服务器会资源更多。volumes可以做容器路径映射,让浏览器容器访问本地的文件。env可以指定一些环境变量,比如设置浏览器语言、时区。

2023-06-27 15:29:55 481

原创 一次elasticsearch集群jvm断路器修复记录

elasticsearch集群熔断,[parent] Data too large, data for [indices:data/write/bulk[s]] would be [27989754

2022-06-23 10:11:55 1018 1

原创 格式化输出浏览器复制请求头

在网页抓包过程中请求头是一个很重要的因素,很多反爬会在请求头上做手脚,少了请求头中某一个参数可能就会导致请求失败,所以最好的方式就是用原始抓包的请求头信息,可以降低我们出错的概率的同时还能节省时间,当然不排除有那种校验请求头顺序的网站,这种还要保证按原请求头顺序去写。以谷歌浏览器为例(也可是其他浏览器或是抓包工具),如下图我们可直观看到当前请求的请求头信息,但是我们复制出来代码中是不能直接使用的还需要改写成key value的形式,通过如下代码可以快速提取我们需要的格式。# -*- coding:ut

2021-12-03 15:46:18 1580

原创 scrapy_redis配置redis集群

单节点的redis太容易挂了,总是出现意外情况,借助scrapy-redis-sentinel库实现scrapy_redis对redis集群的使用按照官方库的说明去修改后启动项目会报错,报错的原因其实是作者的源码包中一个叫queue.py的文件中PriorityQueue类有一些逻辑上的问题1、首先安装库pip3 install scrapy-redis-sentinel2、安装后修改queue.py源码pip3 show scrapy-redis-sentinel #查看源码包路径

2021-09-29 11:24:54 525

原创 redis集群搭建

集群规划:三台服务器各部署一个主节点、一个从节点,同一台服务器上不是直接主从关系。服务器角色172.16.30.25master1/slave2172.16.30.45master2/slave3172.16.30.65master3/slave1集群采用的redis版本为redis-6.0.2,三台服务器上分别下载上传redis-6.0.2.tar.gz的源码包,下载地址redis注意事项 三台机器重复以下步骤即可、或一台机器安装配置好后通过scp工具拷

2021-09-29 09:39:51 159 2

原创 textrank4zh提取文本关键词和内容摘要

通过自然语言处理和机器学习封装的textrank4zh库可以实现对文本的关键词和内容摘要的提取安装 pip3 install textrank4zh 依赖jieba >= 0.35, numpy >= 1.7.1, networkx >= 1.9.1参考 github# -*- coding: utf-8 -*-from textrank4zh import TextRank4Keyword, TextRank4Sentencecontent = """唐朝人最爱的动

2021-07-20 17:58:10 709

原创 python使用gmail发送邮件

国内的网络访问谷歌smtp服务器不太稳定,可以尝试部署在境外的vps上# -*- coding:utf-8 -*-import smtplibfrom email.utils import COMMASPACEfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.application import MIMEApplicationSMTP_SERV

2021-07-16 15:15:01 2150

原创 concurrent.futures实现多进程多线程

# -*- coding: utf-8 -*-import timeimport concurrent.futuresnumber_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]def evaluate_item(x): # 计算总和,这里只是为了消耗时间 result_item = count(x) return result_itemdef count(number) : for i in range(0, 1000000

2021-07-01 16:28:20 522

原创 es嵌套聚合查询

GET extensive/_search{ "_source": [ "url", "domain", "title", "content", "language", "category", "crawl_time" ], "query": { "match_all": {} }, "aggs": { "domain_aggs": { "terms": { "field": "do

2021-06-22 11:18:19 590

原创 几种常见加密算法实现(python)

1、MD5"""MD5消息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。md5加密算法是不可逆的,所以解密一般都是通过暴力穷举方法,通过网站的接口实现解密。"""import hashlibdata = "It's good to get out of your comfort zone"result = hashlib.md5(data.encode(encoding='utf-8')).hexdig

2021-04-25 18:17:37 478

原创 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

重启docker服务发现还是报错解决方案编辑这个文件输入如下vim /etc/docker/daemon.json{ "registry-mirrors": ["https://registry.docker-cn.com"]}重启docker服务后docker正常了systemctl restart docker.service

2021-04-12 18:14:00 95

原创 mitmproxy拦截请求替换js规避selenium检测

有的网站有对webdrive这东西有检测,检测关键就是在js中植入这玩意一、解决方法一种是通过 mitmproxy 拦截请求替换掉这段js,python安装库 pip install mitmproxytextnow_mit.py# -*- coding: utf-8 -*-from mitmproxy import ctxdef response(flow): if 'textnow' in flow.request.url: for webdriver_key

2021-03-09 14:43:06 1743 3

原创 wasm反爬分析处理

目标地址 http://match.yuanrenxue.com/match/151、打开目标地址先抓个包看一下,直接XHR数据是由这个接口返回的,对一下数据是正确的返回也没有加密,观察一下数据返回的地址,一个get请求且url后面由一个m和page组成,那么就是找m的生成算法了2、进入目标地址Initiator,查看调用栈双击进入直接就是m的值这块,m是window.m()window.m()是下面这个函数这个函数的返回值是 window.q(t1, t2).toString() +

2021-03-08 22:44:58 1033

原创 scrape.center 6 js混淆加密分析

目标地址https://spa6.scrape.center/1、抓包观察返回无加密的数据,在看一下返回数据的地址token就是我要找的加密参数2、查找关键参数token的位置谷歌全局搜索 token经过分析这里就是我们要找的token,打个断点看一下token的值得到token了后在console调用一下Object(_0x51c425[‘a’])方法发现了一个函数那么猜测这个函数就是token的生成函数,双击进去得到了这样一个函数有base64有sha1,在下面打个断点看看这个

2021-03-08 20:01:23 333

原创 Sub-process /usr/bin/dpkg returned an error code

安装包的时候报错E: Sub-process /usr/bin/dpkg returned an error code (1)apt-get update --fix-missingapt-get autoremove && sudo apt-get clean && sudo apt-get install -f

2021-02-26 18:43:48 341

原创 ModuleNotFoundError: No module named ‘Crypto.Cipher‘

from Crypto.Cipher import AES安装Crypto失败,ModuleNotFoundError: No module named ‘Crypto.Cipher’正确安装方法1、pip install pycryptodome2、python\Lib\site-packages,找到这个路径,有一个文件夹叫做crypto,将小写c改成大写C就ok了...

2021-02-25 15:23:02 3766 6

原创 es聚合查询提取域名

1、因数据库中数据超过1000万条,通过kibana做如下设置后可做步骤2的聚合查询PUT _cluster/settings{ "persistent": { "search.max_buckets": 20000000 }}2

2021-02-05 16:54:02 405

原创 足球赛事分析

个人项目根据需求对这个 https://www.dszuqiu.com/ 足球赛事网站的比赛数据进行采集并计算格式化处理,同时要满足支持手动设置翻页、以及指定分钟的比赛信息、采集速度等!整体采集逻辑比较透彻,采集比赛结束球队的分析页面的四合一数据及现场数据 计算逻辑比较复杂,需结合页面对四合一数据中让球,大小球、角球的全场半场值进行计算处理,现场数据中射正球门、射偏球门、危险进攻及进球角球信息进行计算格式化处理.核心代码# -*- coding: utf-8 -*-import osimpo...

2021-01-26 00:07:33 1201

原创 Apache2配置文件http服务

1、安装apache2apt install apache2 -y2、更改apache2默认端口为9999,保存退出vim /etc/apache2/ports.conf3、为文件系统配置http服务,编辑apache配置文件,DocumentRoot处为我们文件的路径,这里注意不要将文件目录直接放在root目录下apache2默认是没有root权限的,第一行默认是80端口我们改为我们修改过后的端口9999vim /etc/apache2/sites-enabled/000-default.

2020-12-07 15:37:18 830

原创 ubuntu nginx安装及服务配置跨域问题处理

1、安装nginxapt-get install nginx2、启动nginx服务service nginx start3、配置文件修改vim /etc/nginx/nginx.conf#user www-data;user root; #使用rootworker_processes auto;pid /run/nginx.pid;include /etc/nginx/modules-enabled/*.conf;events { worker_connections 76

2020-11-24 16:07:58 982

原创 java.lang.OutOfMemoryError

es集群master节点频繁的蹦掉查看日志抛出的异常为发生这个情况的原因是因为java的xms(最小内存值)xmx(最大内存值)大小,修改方案如下1、进入elasticsearch安装目录config目录下jvm.options,编辑jvm.options这个文件如下图将箭头处1g改为8g,最大扩展支持到32g,超过32g就不识别了,具体根据你实际内存修改即可2、重启elasticsearch即可,再次操作es不但性能上来了也不会发生这个错误了...

2020-11-06 15:44:26 317

原创 How to Disable SELinux Temporarily or Permanently

RedHat linux操作系统中默认开启了防火墙,SELinux也处于启动状态,一般状态为enforing.致使很多服务端口默认是关闭的,所以好多服务明明配置文件正确,等验证时有时连ping也ping不通,我发现这个是因为我在centos7中使用privoxy工具流量转发将socks的代理转为http协议的,配置文件跟我之前在ubuntu上的一模一样,但是privoxy服务却始终起不起来,我的防火墙是关闭状态的,查看privoxy日志就如下图所示非常的奇怪,报了个没有权限,我在root用户下怎么会没有

2020-11-04 15:31:36 138

原创 centos7配置静态ip和镜像源

1、查看当前机器网卡ip addr #查看网卡信息2、配置静态ip,绿色箭头的地方改为静态static和yes,绿色框里写我们的静态ip和网卡、DNSvi /etc/sysconfig/network-scripts/ifcfg-ens192 #ens192就是我刚才查到的网卡,或者可以在-后面按table键有提示3、重启网卡生效systemctl restart network...

2020-11-03 14:14:58 154

原创 scrapyd界面中文显示乱码问题优化

scrapyd界面中文字符显示时诸如下面图片这样显示乱码不利于我们查看日志且没有很好的可读性,下面我来优化下scrapyd对中文字符显示我的scrapyd部署环境是基于docker容器的,所以我展示的优化环境是基于linux下的(1)首先我们要通过命令查看一下我们scrapyd包的安装位置,我们包的位置就是图中Location显示路径pip3 show scrapyd(2)接下来我们进入该路径下寻找我们要改的scrapyd的配置文件,进入目录后我们要修改的文件就是website.py了cd

2020-10-29 17:40:48 703

原创 logging封装装饰器

先搞个log_decorator.py里面2个函数,说明一下_logger()是封装logger的、exception_logger()是抛出logger的异常的装饰器log_decorator.pyimport loggingimport functoolsdef _logger(): logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) fh = logging.StreamHandler()

2020-10-29 13:48:01 631

原创 scrapy覆写setting

众所周知scrapy框架配置项我们都写在setting文件中,那么我们不同spider中想使用不同的setting配置该怎么办呢?这时候就需要一个方法custom_settings实现即可,我们只需在需要覆写的spider文件采集类下声明一个custom_settings ,下面例子我覆写了headers、pielines、middlewares,如下所示: custom_settings = { 'DEFAULT_REQUEST_HEADERS': { 'U

2020-10-14 15:54:02 181

原创 scrapy-redis从redis到kafka生产消费

redis到kafka生产者# -*- coding: utf-8 -*-import timeimport jsonimport randomimport htmlminfrom lxml import etreefrom datetime import datetimefrom redis import StrictRedisfrom kafka import KafkaProducerfrom multiprocessing import Processredis_host =

2020-09-18 09:55:17 492

原创 ubuntu18.04安装RabbitMQ

1、安装erlang语言apt-get install erlang-nox2、安装rabbitMQapt-get install rabbitmq-server3、创建RabbitMQ 的 GUIDrabbitmq-plugins enable rabbitmq_management4、为GUID创建账户密码,赋予权限rabbitmqctl add_user admin admin rabbitmqctl set_user_tags admin administrator #

2020-08-27 18:45:13 176

原创 lvm扩容

原因是给vps分配的磁盘他只用了3.9g,磁盘空间不足导致,我们需要用lvm重新分配下即可查看磁盘空间df -h查看卷组信息vgdisplay#查看磁盘的属性,找到要添加的磁盘名称(Disk /dev/sda)fdisk -l#使用fdisk将磁盘进行逻辑分区, m来查看命令帮助fdisk /dev/sda # p 查看 q退出#扩展物理硬盘到同一个卷组里面,每个组管理不同物理磁盘:vgextend ubuntu-vg /dev/sda4#分配100%剩余磁盘到根目

2020-08-27 17:32:05 139

原创 ubuntu18.04安装SeaweedFS

1、首先去官网下载对应版本的软件包seaweedfs下载地址2、下载好软件包上传到需要安装的服务器解压,并创建相关目录tar -zxvf linux_amd64.tar.gz #解压mkdir -p ./seaweedfs/data ./seaweedfs/volume #创建目录存储日志文件3、配置master端并执行nohup ./weed master -ip=172.16.30.24 -port=9333 -mdir=./seaweedfs/data -peers

2020-08-27 17:14:13 952 3

原创 esxi克隆虚拟机(vps)

###前提条件你已经有安装好系统的虚拟机了,各项配置也相对完善1、进入到esxi的管理界面点击创建/注册虚拟机2、选择从OVF或OVA文件部署虚拟机,下一步3、

2020-08-27 11:05:41 751

原创 Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

apt-get install 安装时候遇到报错这里是因为apt-get 锁住了解决方法如下ps aux |grep apt #查明apt相关进程kill -9 该进程号 lsof /var/lib/dpkg/locklsof /var/lib/apt/lists/locklsof /var/cache/apt/archives/locksudo dpkg --configure -a...

2020-08-27 10:43:41 2449

原创 ubuntu18.04配置静态IP

vim vim /etc/netplan/50-cloud-init.yaml #编辑ip配置文件#输入如下配置network: version: 2 renderer: networkd ethernets: ens160: #配置的网卡名称 不知道的ifconfig命令查看 dhcp4: no #dhcp4关闭 dhcp6: no #dhcp6关闭 addresses: [172.16.30.21/24]

2020-08-27 09:53:06 168

原创 Chrome DevTools协议之Page.captureSnapshot

我的项目需求是这样的:在无headless的情况下实现保存mhtml格式的网页,假如允许有头的话我可以用ctrl+s模拟人工保存页面的方式加上selenium带的chromeOptions.add_argument(’–save-page-as-mhtml’) 功能即可实现,但是考虑到部署服务器以及效率等问题需要在无headless的模式下是最理想的,经过翻阅资料了解到了Chrome DevTools谷歌浏览器开发者工具远程调试协议中的Page.captureSnapshot方法来实现我的需求,代码如下(

2020-08-14 18:31:09 1435

原创 pyppeteer ctrl+s保存原始页面

这种方式的采集的好处是能够将页面中的html、css、js、image全都保存下来,我们得到的页面就是渲染后的页面,弊端就是采集速度大幅下降效率低.本文主要介绍基于pyppeteer和selenium两种工具的采集pyppeteer# -*- coding: utf-8 -*-import timeimport asyncioimport pyautogui #键盘操作库from pyppeteer.launcher import launch async def hot_key(pag

2020-07-31 10:49:58 1103

原创 完成multipart/form-data上传请求

我想一般大家是不太会碰到这个问题,之所以我会遇到这个问题是由于在做深网一个实时聊天室监测的时候,如图通过抓包我们看见他的不同寻常了实际这里就是multipart/form-data请求,http协议本身的原始方法不支持multipart/form-data请求,这个请求由原始方法演变而来的。multipart/form-data的基础方法是post,也就是说是由post方法来组合实现的,这种请求我们用python是怎么完成的呢,我们可以用到这个库requests_toolbelt 库中的 Multipar

2020-07-23 17:17:35 1171

原创 统计某个目录下py文件代码行数

想要统计某个目录下py文件的代码行数如图我们想要统计的就是dark目录下的py文件代码行数我们只需bash 执行下这个count.sh的shell脚本即可注意我们需要将该脚本放于统计目录的同级目录运行#!/bin/bashfunction count_lines() { total=0 until [ $# -eq 0 ];do file=$1 if [ -f $file ];then #count=`grep -v "^#" $file | grep -v -E "^[[:s

2020-07-16 16:05:23 343

原创 最新微信公众号采集方案详细介绍

目前比较有效的几种微信公众号的采集方式:1、通过web端素材管理接口的方式2、通过appium从手机端3、通过逆向工程暴力获取4、通过第三方服务接口5、搜狗微信公众号接口(已凉)个人及小团体对公众号内容获取数量不多的情况下一般都会采用前两种相对简单便捷成本低的方式去获取内容,不差钱的团队肯定就买第三方服务了,靠提供微信公众号采集接口的服务盈利的肯定就是逆向工程了.我介绍第一种比较简单适合小规模采集的方案1、首先我们需要注册个属于自己的公众号平台微信公众号注册地址2、注册成功后进入点击如图所示

2020-07-16 15:45:23 3771

原创 爬虫动态拼接url

# -*- coding: utf-8 -*-from urllib import parseup_url = 'https://news.fx678.com/keyword/100930' #上一级完整的urlnow_url = '/202012160935552074.shtml' #up_url页面中的下一级链接,我们不难发现这个链接是不完整的缺少https://news.fx678.comurl = parse.urljoin(up_url, now_url) #通过parse.url

2020-07-02 18:38:02 584

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除