php curl时遇到Can't load the certificate "..." and its private key: OSStatus -25299的问题

Date 三 22 十一月 2017 By Prince Category php.

php在执行curl 使用私钥访问https网站时, 提示Can't load the certificate "..." and its private key: OSStatus -25299, 在此之前还有提示其他类似的错误, 应该都是因为php中curl的SSL Version中不是OpenSSL的问题

基本环境: MAC OS X、php5.6

phpinfo()查看curl信息, 显示的SSL Version 不是OpenSSL(在linux可能也显示别的)

一、先查看系统的curl支持的协议

>>> curl -V
curl 7.56.1 (x86_64-apple-darwin15.3.0) libcurl/7.56.1 OpenSSL/1.0.2m zlib/1.2.5 …
more ...

dnspod动态域名提交, 类似花生壳实现的功能

Powered by Lei

1. dnspod动态提交域名解析记录

经常想把家里的电脑作为服务器绑定到外网使用, 但是ip是动态的, 这个脚本就是借助dnspod的解析api, 自动把域名解析到家里电脑的公网ip 然后从路由器开启dmz主机, 就可以在外网用域名访问家里的电脑了

一、dnspod动态提交域名解析记录

经常想把家里的电脑作为服务器绑定到外网使用, 但是ip是动态的, 这个脚本就是借助dnspod的解析api, 自动把域名解析到家里电脑的公网ip 然后从路由器开启dmz主机, 就可以在外网用域名访问家里的电脑了

程序每15分钟会检测一次ip变化, 发生变化则提交到dnspod

1. 安装

pip install requests apscheduler argparse

如何获取自己的api_token

修改文件, 打开dnspod.py,
修改 API_TOKEN = '登录的token' 为你的API_TOKEN, 方法是id, api_token

2. 使用

  1. 获取你的域名列表
python dnspod.py -d
  1. 获取指定域名的记录信息
python dnspod.py -r …
more ...

微信公众号信息抓取方法(一)——抓取公众号历史消息列表数据

马上双十一了, 凑个热闹, 发布一篇重量级的文章。如何抓取微信公众号的文章

一、介绍

研究微信抓取之前, 看过知乎有大神写的比较完善的例子, 受到启发, 才完成了整个微信公众号的抓取。 微信公众号内容的批量采集与应用 微信抓取的难点: 1. 无法获取到微信公众号的信息(微信并没有提供列表) 2. 无法脱离客户端获取微信公众号历史消息页面 3. 可以获取到文章内容页但是脱离客户端后无法获取到点赞、阅读数据

所以, 流程中的一部分是依赖于手机客户端的, 如果要大量抓取微信公众号信息,就必须依靠大量客户端抓取(自己准备手机、微信号、电费、和人工)

基本使用的方式是和知乎大神说的一样的, 都是中间人代理攻击的方式。

一、抓取要使用的工具

知乎大神用的是nodejs, post给php处理, 并且github上有的大部分也是用这个方式, 或者纯nodejs的方式, 个人觉得受限太大, 最主要的原因是我不会nodejs, 简单学过一些, 不过使用的anyproxy, 还是会出现一些无法解决的问题, 无法适用于长期采集

  1. python3.5+
  2. mitmproxy
  3. 其他用到的包插件

二、微信抓取基本的应用规则

  1. 单个客户端公众号历史消息列表页, 一天访问次数不可以超过1300次 …
more ...

微信公众号信息抓取方法(二)——抓取文章点赞、阅读、评论、小程序信息

上一篇文章文章将cookie信息保存到redis中, 则这一节主要是取出cookie, 并且构造方法去获取文章的点赞、阅读、评论、小程序信息, 而且不会访问文章内容页, 防止被微信认为是刷阅读数而封号, cookie的有效期保险一些为2个小时。所以在2个小时内一定要处理完数据

# crawl_like.py
# -*- coding:utf-8 -*-
''' 抓取文章点赞和评论'''

import json
import re
import time
import threading
from datetime import datetime
import requests
from bs4 import BeautifulSoup
from app.config import redis_key
from app import logger, _, __
from app.model.Article import Article …
more ...

微信公众号信息抓取方法(三)——增加微信抓取稳定性

在客户端访问公众号时, 会附加访问很多url, 图片, 视频或者其他检测类url的请求, 这些请求会造成一些开销, 且容易让客户端卡死、闪退等问题, 所以在rule.py中只要指定某些访问的url, 直接返回数据, 不发生实际的请求, 即可提高抓取效率

def request(self, flow):
    not_allow_domain = [
        r'mmbiz\.qpic\.cn',
        r'wx\.qlogo\.cn',
        r'short\.weixin\.qq\.com',
        r'minorshort\.weixin\.qq\.com',
        r'www\.microvirt\.com'
    ]
    ''' 请求 '''
    _url = flow.request.pretty_url
    for i in not_allow_domain:
        if re …
more ...

supervisor python的进程管理工具 使用教程 【持续更新】

一、安装配置

文档地址

1. 安装

easy_install supervisor
pip install supervisor

2. 生成配置文件

sudo echo_supervisord_conf > /etc/supervisor/supervisord.conf

3.修改配置项

# 找到
;[include]
;files = relative/directory/*.ini

# 改为
[include]
files = /etc/supervisor/conf.d/*.cnf

4. 启动

supervisord -c /etc/supervisor/supervisord.conf

二、基本使用

1. 创建脚本

# vim /etc/supervisor/conf …
more ...

awk的使用方法(慢慢记录完善)

1. 输出第几行

$0 代表整行

awk '{print $1}' # 输出第一行

2. 过滤数据

awk '$1==1' # 第一列等于1的数据

其他计算符号 !=、>、<、>=、<=

# 过滤并输出指定列
awk '$1==1 {print $1}'

3. 格式化输出

awk '{printf "%-8s %-8s %-8s %-18s %-22s %-15s\n",$1,$2,$3,$4,$5,$6}' netstat.txt

4. 指定分隔符和指定输出分隔符

awk -F 分隔符 -OFS 输出的分隔符

5. 字符串查找

模式取反用 …

more ...

Python 多进程和多线程的方案

一、进程

对于电脑来说, 一个任务就是一个进程(Process), 而每个进程可能还要同时做多件事儿, 所以可以通过进程生成新的子进程

二、线程

线程是一种轻量级进程, 是程序执行流的最小单元。因为每个进程至少要做一件事儿, 所以每个进程必然有一个最小的进程。

三、多任务的模式

一、多进程模式

启动多个进程, 每个进程有一个线程去完成。因为python的多线程有GIL锁(全局锁), 在CPU密集型的情况下, 效率可能还不如单线程。 CPU密集型的意思是cpu利用比较高, 大部分需要使用cpu来计算。

二、多线程模式

单个进程下, 多个进程去完成。这种情况下只推荐做IO密集型的操作, 比如爬虫

三、多进程+多线程模式

启动多个进程, 每个进程下再启动多个线程去完成, 这种在一般项目中都有可能采用, 比如一个项目有多个脚本, 分别启动进程去管理, 而在单个脚本任务中, 又启动多个线程去抓取数据等

四、Python 多进程的方式

Python 多进程采用的是multiprocessing, 兼容性好, 可以兼容windows平台

一、基本使用 …

more ...

ProxyTool代理池功能, 免费获取ip代理

在制作爬虫或者抓取别的网站的时候, 因为频率等稳定经常被封, 所以需要加代理ip, 但是因为各大网站的免费代理失效速度很快, 而且使用的时候抓取不方便, 所以开发了一个代理ip池, 免费获取代理ip,并且自动验证, 通过web接口, 直接可以获取到使用的代理ip。

项目地址:https://github.com/mm333444/ProxyTool/

ProxyTool

python3搭建的代理池功能, 免费获取代理ip 每10分钟自动抓取ip66、ip181、xici代理的脚本, 保存到mongo中, 并且提供web接口, 方便搭建调用 环境: python3.6.2

一、安装方法

pip install -r requirements.txt

二、使用方法

-env 指定环境, 会读取app.config下指定的配置文件

python run.py -env online

三、 基本逻辑

整个项目分为三部分 …

more ...

微信公众号历史记录以及文章内容接口数据分析

一: 查看历史消息

1. 请求转发到实际的页面

URL https://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MzI2NjA3NTc4Ng==&devicetype=iOS10.3.2&version=16050c20&lang=zh_CN&nettype=WIFI&ascene=3&fontScale=100&pass_ticket=M9BUVH%2BJ9ju9HPQnUHJOghEPjTseQIWuGhGhdg6wE2FaaMeWfW3NZR1bAv8VKX2t&wx_header=1 作用 猜测是为了设置cookie等一些信息, 不经过则cookie无效 请求方式: GET 请求参数

参数名 参数值 说明
__biz MzI2NjA3NTc4Ng== 公众号标识,每个公众号值不变,base64加密,解密后是数字
devicetype iOS10 …
more ...

Pages

  • 关于Docker