- 博客(55)
- 收藏
- 关注
原创 BOSS直聘免费下载个人简历为PDF的方法
首先,点击进入预览页面此时这个页面除了你的个人简历,就只有一个多余的headers里,那么在“下载简历”这一行点击右键检查,右击这个标签选择Delete Element关闭调试窗口,右击页面,选择打印保存即可...
2021-05-26 11:10:16 7631 2
原创 猿人学第十八题(jsvmp)题解
猿人学第十八题[题解找到请求发送的位置确认参数生成位置加密过程hook说实话,这种反爬真的是第一次见,而且反爬逻辑还算比较清晰,参数没有被过分的加密处理很容易推算出来,好了,既然都做到第十八题了,其他的废话也不多说,直接进入调试阶段。找到请求发送的位置第一页没有加密,跳过,直接看第二页的数据,抓到请求后,点击initiator查看请求发起位置,点进去第一个代码如图大眼一看,这里没有任何添加参数什么乱起八糟的逻辑,既然被标记位困难那肯定有他的道理在的,从xmlHttpRequest生成开始,一步
2021-03-22 19:07:03 4631
原创 elasticsearch通过动态模板实现年度对象字段定义
{ "settings": { "index.refresh_interval": "1s", "index.number_of_replicas": "1", "index.number_of_shards": "2" }, "mappings": { "btc_balance_test": { "dynamic_templates": [ {
2021-02-22 15:21:36 889
原创 汽车之家字体加密破解(CSS样式反爬)
废话不说多,直接切入主题。能来到这里的应该都已经发现汽车之家论坛以及一些频道的网页源码是这种:刚看到这里的时候,想到刚学爬虫时所听说的CSS样式反爬,没错,就是这个。破解方法就是破解其字体文件即可,通过Chrome抓包找到一个.ttf的请求,可以得知这是字体文件为一次单独的请求。在源码中搜索ttf,即可找到ttf字体文件的url。刚开始的想法时构造一个字典,形成映射,后续的爬取工作都使...
2020-11-27 14:16:32 2478 2
原创 web爬虫-自定义字体反爬通用解决方案
简介之前做过汽车之家的字体反爬并可以以100%的成功率稳定解析,但是手动去生成一个已知的字体json是一个极其繁琐且无聊的过程,这导致了以后如果新增带有字体反爬的网站或者目标网站改版,则又要手动去生成,过程及其痛苦,后来有小伙伴问我,能不能省去这个手动的过程,让它全自动,当时受知识面所限,我回答不可能。这几天又想起这个问题了,就想尝试一下能否全自动,经过周末两天的半打鱼半晒网,终于实现了自动化...
2020-11-27 14:15:34 1106 2
转载 7.elasticsearch一些原理
如何决定文档被存储在哪个分片?shard = hash(routing) % number_of_primary_shardsrouting是一个可变值,默认是文档的_id,也可以设置成一个自定义的值。routing通过 hash 函数生成一个数字,然后这个数字再除以number_of_primary_shards(主分片的数量)后得到余数。这个分布在0到numb...
2020-11-27 14:13:07 942
原创 Elasticsearch问题
Elasticsearch 如何知道一个文档应该存放到哪个分片中呢?首先这肯定不会是随机的,否则将来要获取文档的时候我们就不知道从何处寻找了。实际上,这个过程是根据下面这个公式决定的:shard = hash(routing) % number_of_primary_shardsrouting 是一个可变值,默认是文档的 _id ,也可以设置成一个自定义的值。 routing 通过 ha...
2020-11-27 14:12:52 751
原创 scrapy各种请求参数
get请求 查询字符串1.使用FormRequest start_urls = ['https://careers.tencent.com/tencentcareer/api/post/Query?'] def start_requests(self): for url in self.start_urls: params = { "timestamp": str(int(time.time() * 1000)),
2020-10-10 16:13:17 3370
原创 调用第三方so时包名正确仍提示java.lang.UnsatisfiedLinkErro的解决方法(转载)
报错如下在集成腾讯云的sdk的时候,报下面的错java.lang.UnsatisfiedLinkError: No implementation found for int[]com.tencent.rtmp.TXRtmpApi.getSDKVersion()image.png遇到的情况1、在网上搜索,都是说需要将在grade里面加上abiFilters。但是这个我已经加了为啥还是会出...
2019-12-25 09:24:30 1208
转载 5.elasticsearch数据输入和输出
以下所有内容来源于官方文档——数据的输入与输出取回一个文档(pretty可以使输出格式化)GET /website/blog/123?pretty返回文档的一部分GET /website/blog/123?_source=title,text如果你只想得到_source字段,不需要任何元数据,你能使用_source:GET /website/blog/123/...
2019-11-15 14:34:33 1114
转载 4.elasticsearch分布式特性——集群内的原理
分布式特性在本章开头,我们提到过 Elasticsearch可以横向扩展至数百(甚至数千)的服务器节点,同时可以处理PB级数据。我们的教程给出了一些使用 Elasticsearch 的示例,但并不涉及任何内部机制。Elasticsearch 天生就是分布式的,并且在设计时屏蔽了分布式的复杂性。Elasticsearch 在分布式方面几乎是透明的。教程中并不要求了解分布式系统、分片、集群发...
2019-11-15 14:34:04 857
转载 3.elasticsearch复杂搜索
复杂搜索搜索姓氏为Smith的雇员,并且年龄大于30,使用过滤器filter,它支持高效地执行一个结构化查询。curl -X GET "localhost:9200/megacorp/employee/_search" -d'{ "query" : { "bool": { "must": { "match...
2019-11-15 14:33:35 843 1
原创 2.elasticsearch进一步了解
面向文档在应用程序中对象很少只是一个简单的键和值的列表。通常,它们拥有更复杂的数据结构,可能包括日期、地理信息、其他对象或者数组等。也许有一天你想把这些对象存储在数据库中。使用关系型数据库的行和列存储,这相当于是把一个表现力丰富的对象挤压到一个非常大的电子表格中:你必须将这个对象扁平化来适应表结构--通常一个字段>对应一列--而且又不得不在每次查询时重新构造对象。Elastics...
2019-11-15 14:33:19 833
转载 1.elasticsearch概念和基本用法
全文搜索属于最常见的需求,开源的Elasticsearch(以下简称 Elastic)是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。Elastic 的底层是开源库Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST ...
2019-11-15 14:33:06 857
原创 Elasicsearch查询-高级查询-子条件查询
子条件查询:以特定字段查询所指定值Query context在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来表示匹配的程度,旨在判断目标文档和查询条件匹配的有多好全文本查询 针对文本类型数据字段级别查询 针对结构化数据,如数字,日期等...
2019-11-15 11:20:04 924
原创 记录一次使用docker-compose部署django前后端分离项目
使用django写了一个前后端分离的个人博客,正好赶上之前买的阿里云的服务器到期,又重新装了一次环境,总之很麻烦,正好最近在学docker,试一下用docker部署。个人感觉使用docker部署的好处就在于一次性部署,随处可用,在windows下生成的镜像也可以迁移到Linux。项目简介博客使用了django-rest-framework框架进行后端程序编写,缓存用到了redis,数据存储...
2019-11-14 15:18:42 2241 3
原创 docker常用操作
镜像操作docker images 列出所有镜像docker rmi image_id 删除镜像docker save -o 文件名(tar) 镜像名 打包镜像docker load -i 文件名(tar) 从文件中加载镜像docker run -d 镜像名 以守护进行模式运行一个容器容器操作操作意义参数docker ps列出容器-a 列出所有容器 ...
2019-11-14 10:58:11 771
原创 基于conda环境的Scrapy Python爬虫简易管理脚本
#!/bin/bashCONDA_PATH="/root/anaconda2" # conda dirCONDA_VENV_NAME="douyin" # 虚拟环境名PROJECT_NAME="douyin" # 项目名,可随意PROJECT_PATH="/data/douyin/douyinChallenge/douyinChallenge" # scrapy项目路径SPIDER_NA...
2019-11-14 10:32:16 938
原创 redis和rabbitmq实现延时队列
有时候有些业务是需要在消息过期后执行一些操作,譬如订单创建三十分钟后自动删除。redis通过redis键过期通知可以实现此功能首先启用redis通知功能:编辑/etc/redis/redis.conf文件,添加或启用以下内容(过期通知):notify-keyspace-events Ex或者登陆redis-cli之后,输入以下命令:config set notify-key...
2019-09-20 17:02:28 1955
原创 scrapy技巧
最近写scrapy的时候,有些链接会自动重定向,就导致了不同的错误都重定向到了一个相同的页面,导致无法根据响应内容做对应的处理,查了文档,关闭重定向的方式为:REDIRECT_ENABLED = False但是经过实际测试,该重定向只能针对响应状态为302,301的重定向进行处理,无法处理通过元数据进行重定向的页面,类似于:<meta http-equiv="refresh...
2019-08-27 14:04:11 974
原创 bash脚本-centos7安装docker
#!/bin/bashset -ex \ && sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-lat...
2019-08-22 16:30:46 1087
原创 使用rabbitmq实现异步发送邮件
# -*- coding: utf-8 -*-# @Time : 2019/8/21 17:35# @Author : Coderfly# @Email : coderflying@163.com# @File : test.pyfrom smtplib import SMTP,SMTPExceptionfrom email.mime.text import MI...
2019-08-21 18:17:43 1793
原创 如何使用尽可能少的代理IP爬取尽可能多的网页资源
越来越多的网站采用了封(限制)IP的策略,单个IP访问过于频繁就会被献祭掉,但我们的IP数量是有限的,当遇到大型网站时,如果使用尽可能少的资源完成尽可能多的资源获取呢?(针对短效IP)确定IP被封的条件,找出不被封的临界点如果某网站的限制条件为:每0.5秒访问一次,连续访问100次就封禁,那么我设置成0.55秒访问一次,是否就可以绕过这个低级的反爬?实测是可行的,但这样做的网站很少,据说现...
2019-08-21 17:14:03 195
原创 Python通过exec函数实现动态生成函数
exec为Python内置函数,可以实现将字符串转成python表达式并执行example:简单单行语句exec("print('haha')")-> hahaexec('print(1+7)')-> 8多行语句需要注意模块导入的问题,需要在执行前将所需依赖全部导入,也可以在函数内部导入...
2019-08-13 14:36:58 1356
原创 Scrapy常见异常以及解决方法
Request.url is not modifiable, use Request.replace() instead不能直接在process_response直接修改url,需要调用方法request._set_url(url)<twisted.python.failure.Failure <class 'OpenSSL.SSL.Error'>错误原因一般是...
2019-07-31 14:40:14 2372
原创 scrapy如何在中间件修改请求url
最近在做汽车之家爬虫的时候,访问频繁会被重定向到人机验证页面,此时request的请求url已经发生改变,直接更换ip然后return request的话会重新访问人机验证页面,所以需要在下载中间件中修改url。直接修改的话,会抛出此异常因为相应回来之后,无法对requests的url进行直接修改,但是scrapy提供了_set_url方法来修改。...
2019-07-31 09:42:22 2650
原创 Python使用content.encode(“utf-8“).decode(“unicode-escape“)导致中文乱码的解决方法
当想要把一个字符串中的\u002F这样的字符串转成正常字符串时,如果字符串中存在中文字符,将导致中文被转成乱码。例如:content = "\\u002F哈哈"content = content.encode("utf-8").decode("utf-8") ==> \u002F哈哈 无法进行转码如果使用.decode(“unicode-escape”)content = "...
2019-07-29 16:50:44 15570 7
原创 爬虫之极验验证码破解-滑动拼图验证码破解
滑动拼图验证码破解前言步骤分析第一步,获取原图第二步 拼接图片第三步 计算豁口所在位置前言滑动验证码已经流行很多年了,我们在这里尝试一下如何实现滑动拼图验证码的自动化拖动。这是某网站的注册页面,点击拖动按钮后会出现豁口滑动。步骤分析大致流程就是使用webdriver此页面后,获取到原图以及有豁口的图,拿这两个图进行对比,找到豁口部分的左侧坐标,根据这个坐标进行滑动验证即可。第一步,获...
2019-07-26 18:00:21 9995
原创 爬虫之js加密参数破解练习-百度指数爬虫(附完整源码)
百度指数爬虫分析查看响应体找到加密的代码块完整代码分析百度指数,发送数据的时候没有加密参数,直接将关键字替换就可以实现不同网页的访问,响应数据url:https://index.baidu.com/api/SearchApi/index?word=王者荣耀&area=0&days=30但是其响应的数据却有加密,所以我们要分析,如何对数据进行解密。查看响应体不难猜出,几...
2019-07-24 16:05:32 3068 4
原创 爬虫之js加密参数破解步骤分析-百度翻译移动版sign值的获取
百度翻译sign值的获取所解决的问题请求参数分析动态分析参数生成方式定位参数生成的位置断点调试使用python生成sign第一种方式-读懂js代码,翻译成python使用执行js的包所解决的问题js参数加密,越来越多的网站进行数据传输时不使用明文传输而改为使用js通过一定的规则的转换后,后端进行解密,或者对铭文数据进行转换后,将值单独放在另一个字段,后端通过相同的方法进行转换后与我们传过去的值...
2019-07-24 12:43:04 1614 3
原创 使用tesseract实现简单图形验证码识别
Tesseract-OCR学习一安装测试数字识别英文识别中文文字识别python对接安装按照官方文档提示进行安装语言库选择math,chinese simplified.windows下需要添加环境变量变量名TESSDATA_PREFIX变量值F:\Program Files (x86)\Tesseract-OCR\tessdata测试数字识别进入tesseract安装目录...
2019-07-22 12:25:31 1436
原创 使用gunicorn+nginx部署flask时,Flask限流模块-flask-limiter获取远程客户端ip地址
解决问题:使用Nginx+gunicorn部署时,限流模块获取ip地址进行限制时,只能获取到本机地址。nginx配置修改加上roxy_set_header X-Real-IP $remote_addr;flask-limiter获取ip地址函数修改这是使用限流模块获取远程ip地址的函数def get_remote_address(): """ :return: t...
2019-07-19 10:17:32 1043
原创 Pillow 之frombytes从二进制中读取图片
frombytesfrombytesfrombytes# 原方法def frombytes(mode, size, data, decoder_name="raw", *args): pass# 示例代码import requestsfrom PIL import Imagecontent = requests.get("http://my.cnki.net/Register/C...
2019-07-18 10:38:04 16060 1
转载 pyppeteer使用常见问题及解决方案(转)
一、前言以前使用selenium的无头浏览器,自从phantomjs2016后慢慢不更新了之后,selenium也开始找下家,这时候谷歌的chrome率先搞出来无头浏览器并开放了各种api,随后firefox也开始做。现在selenium的测试也都支持这两个浏览器的无头模式了,只需要在引入的时候配置一下就可以了。之所以要采用谷歌chrome官方无头框架puppeteer的python版本pyp...
2019-07-15 17:17:34 8899 2
原创 Flask+Pyppeteer搭建自动生成动态cookie的服务器
Flask+Pyppeteer搭建自动生成动态cookie的服务器前言pyppeteer修改User-Agent修改浏览器特征cookie的获取Flask结果结语前言公司有个项目大致工作流程为客户批量发送url,我们拿到后对这批url进行数值和评论的采集,网站呢是有个限制范围的(即配置库),普通的网站直接根据配置采集即可,但有些网站则需要生成cookie才能访问到内容,之前是在系统内嵌入了se...
2019-07-15 17:12:19 920
原创 抖音模拟登陆的实现
抖音爬虫-登陆参数加密第一步,对账号,密码转成bytes类型并与0x5异或第二步第一步,对账号,密码转成bytes类型并与0x5异或第二步
2019-06-27 18:21:45 15843 17
原创 dockerfile构建自定义镜像(以python3.6为例)
dockerfile构建自定义镜像实例其他参数实例以centos7.6为基础镜像,构建带有python3.6.8的镜像FROM centos:7.6.1810RUN set -ex \ && yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-dev...
2019-06-10 19:17:16 11715
原创 CentOS7.6安装python3.6.8并与python共存
将以下命令保存为.sh文件,bash 运行即可#!/bin/bashset -ex \ && yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make wget \ && yum clean...
2019-06-10 17:34:54 456
原创 docker镜像与容器的基本操作
docker镜像操作镜像操作docker images 参数容器操作docker container 参数将镜像推送到远端仓库(阿里云)镜像操作docker images 参数-a, --all 显示所有详细信息–digests 显示摘要-f, --filter filter Filter output based on conditions pr...
2019-06-10 17:08:18 232
转载 Python生成图形验证码
改代码为大神开源出的代码,验证码质量很高,有时候肉眼都难以识别。#!/usr/bin/env python3# -*- coding: utf-8 -*-import randomimport stringimport os.pathfrom io import BytesIOfrom PIL import Imagefrom PIL import ImageFilterfr...
2019-06-05 18:13:57 471
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人