2019年7月29日 | 标签:

因为需要去百度后台去取一些报告数据(有的百度产品是没有提供API接口)所有需要模拟cookie去后台下载数据,但是百度的cookie是有15分钟的有效期,所以要么挂一个线程每15分钟用这个cookie去百度那边续命下(目前是用google sheets的脚本加定时器这么弄)但是 还有一个问题无法解决,如果有人登录了这个账号后再注销 这个cookie也会作废,所以使用cookie不是万全之策 除非单独出一个不会有人登录的账户 那这个账号的cookie就可以长期稳定的取数

 

还有一种方法就是模拟登录,拿到新鲜cookie

但是百度和其他搜索引擎的广告后台都是有验证码 无法直接登录

所以第一步就是验证码识别

试过了几个平台 还是觉得 有个平台的验证率最高 因为是人工识别 百度自己的 大数据识别 不准。。

而且打码的价格很低,1块钱可以识别1000个验证码。。足够用了

真没必要去弄机器学习识别验证码

下面是过程

http://www.chaojiying.com/api-14.html

下载python案例文件

有几个错误地方要小心 需要是python3  这个例子是python2 print这边需要加括号

然后缩进要注意点

其他还好

然后把下面几行换成

if __name__ == ‘__main__’:
jpg_link = “https://cas.baidu.com/?action=image2&appid=3″
path=”5566.jpg”
request.urlretrieve(jpg_link, path)
chaojiying = Chaojiying_Client(‘账号’, ‘密码’, ‘后台id’) #用户中心>>软件ID 生成一个替换 96001
im = open(path, ‘rb’).read()
print(chaojiying.PostPic(im, 1902)[“pic_str”])

 

即可 如下图所示


 

 

 

 

 

是不是很方便

提供下全文代码吧

#!/usr/bin/env python
# coding:utf-8
import requests
from urllib import request
from hashlib import md5
class Chaojiying_Client(object):
def __init__(self, username, password, soft_id):
self.username = username
password = password.encode(‘utf8’)
self.password = md5(password).hexdigest()
self.soft_id = soft_id
self.base_params = {
‘user’: self.username,
‘pass2’: self.password,
‘softid’: self.soft_id,
}
self.headers = {
‘Connection’: ‘Keep-Alive’,
‘User-Agent’: ‘Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)’,
}
def PostPic(self, im, codetype):
“””
im: 图片字节
codetype: 题目类型 参考 http://www.chaojiying.com/price.html
“””
params = {
‘codetype’: codetype,
}
params.update(self.base_params)
files = {‘userfile’: (‘ccc.jpg’, im)}
r = requests.post(‘http://upload.chaojiying.net/Upload/Processing.php’, data=params, files=files, headers=self.headers)
return r.json()
def ReportError(self, im_id):
“””
im_id:报错题目的图片ID
“””
params = {
‘id’: im_id,
}
params.update(self.base_params)
r = requests.post(‘http://upload.chaojiying.net/Upload/ReportError.php’, data=params, headers=self.headers)
return r.json()
if __name__ == ‘__main__’:
jpg_link = “https://cas.baidu.com/?action=image2&appid=3″
path=”5566.jpg”
request.urlretrieve(jpg_link, path)
chaojiying = Chaojiying_Client(‘我的账号’, ‘我的密码’, ‘900784’) #用户中心>>
im = open(path, ‘rb’).read() #本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
print(chaojiying.PostPic(im, 1902)[“pic_str”])
没有评论 (113 views)
2019年6月5日 | 标签:

项目背景

 

每个月需要从GA工具中下载固定的原始数据(分成若干表,汇报不同维度数据,如不同渠道的流量,不同页面内容的流量,不同渠道和页面内容的转换指标)然后再对数据进行清洗和整理(例如不规范的tracking code需要换成正常的,冗长的页面URL需要换成标准统一的产品名称)

最后进行分类和统计,进行可视化,(根据不同维度拆分,进行月度趋势分析)

 

目前的挑战

 

通过人工每个月去提取数据,频率太低,我们需要更高频如每天而不每个月去看数据变化趋势,并结合我们的动作,及时反馈和响应

同时人工的方法GA不同的子报表中下载数据需要比较多的时间,也会出错,我们希望减少人工投入时间,降低出错

省下做报告的时间,花更多时间去分析数据和进行优化建议的实施

 

 

目前的解决思路

 

主要讲我们的方案分别为三步,

 

  • 数据获取自动化
  • 数据清洗和归类自动化
  • 数据可视化自动化

 

 

本文主要讲解数据获取自动化实施方案

 

获取GA的数据一般可以有3种办法

使用帐号密码登录,进入配置好的自定义报告中下载

使用第3方工具配置好参数下载(例如google sheet的插件)

使用脚本(google sheets脚本,获取python或者excel的VBA或者PHP)通过谷歌的API下载

 

这里能自动化的只有后2者,使用第三方工具如google sheet的插件最方便的,不需要写代码,通过点下按钮 数据即可完成

下面内容主要是介绍使用google sheet的插件来完成自动化获取数据

 

 

 

我们想要自动化去GA数据库获取我们需要的数据,而不用人工每次扶梯子去下载,并且我们希望 自动获取数据后自动进行清洗 分类,并且自动化实现图表化,并且最好是能按天为单位自动去显示实时的数据,而不是每个月等到人工去完成

 

 

  • 在GA中的自定义报告中设置好需要查看的数据维度,并进行测试
    • 这一步其实是在打草稿,因为在google sheets中使用插件不方便调试数据参数

最有效的方式就是在GA的自定义报告中对数据维度进行拖拽并测试

 

以其中一张raw3表格为例

可以看到里面包含了若干的数据 主要每个页面的表现

页面的名称叫page, 指标是session等

点击编辑表格可以看到

彼此对应的metric和dimension

记住以上的dimension和metric

 

 

现在 我们使用google sheets来获取这些数据

 

打开google sheet 新建一个sheet

起名叫GA Report testing0603

 

点击导航栏的add-on,安装一个叫google analytics的插件

安装好以后,google sheet里面就会增加一个create new report的按钮

在弹出的对话框输入报告的名称,这个名称也是以后放置数据的sheet名称

Account和property还有view的选择和你的GA账户设置保持一致

可以点击Ga查看你的account以及property还有view的名称就可以知道选

 

这里关于dimension和metric的设置可以参考GA报告

设置好了就是

 

其中有一个比较特别是关于goal的设置

其中完成数量和转换率

我们使用goalx completions来代替

 

 

 

最后就是这个

我们需要把这里的XX换成7 既

ga:goalXXCompletions,ga:goalXXConversionRate

换成

ga:goal7Completions,ga:goal7ConversionRate

 

其中关于

关于metrics和order 还有filters的设置 可以参考下面的网址介绍

https://developers.google.com/analytics/devguides/reporting/core/dimsmets#view=detail&group=session

 

同理可以制作raw1的报告

 

此致可以从GA中把数据输出到Google Sheet中了,

最后使用插件的schedule 功能,即可定期去运行

 

没有评论 (179 views)
2019年5月18日 | 标签:

故事背景

上海移动提供一个和全家的服务,可以申请一个虚拟手机号,不需要买双卡刷待 即可同时拥有2个号码拨打电话和发送短信的功能(具体可以百度查)

但是移动选号提供最后4位选择号码,如果比较好的号码比如8888 肯定是没有了再比如生日也么有

这4位只能匹配移动号码的最后4位 无法中间查询,于是我就想使用爬虫模拟发送0001-9999

即可把移动数据库里面的所有可以选的号码抓出来

 

思路介绍:

APP IOS抓包:

最开始是在app上发现这个入口,想着去抓取手机的数据包看看发送请求的网址,但是因为事https加密,弄了很久

又是设置手机代理,又是下载电脑证书,还有手机证书,好生麻烦,最后放弃

 

转移战场:

无意间我在微信里面看到了这个活动页面,既它留了一个H5的接口,那么就可以绕过APP抓包的问题,通过谷歌浏览器

轻松看到发包对象的网址

然后看到了传递的4个参数,并且看到了传回来的的值

 

但是因为也是https加密,并且带cookie还有session,如果有第3方网抓软件是非常复杂的去模拟这些信息

也是无意间看到谷歌浏览器的console可以运行js脚本,并且js脚本是可以发送http请求的

于是就把好这个东西做出来了

如下图所示

为了安全就不放代码(免得被移动找人请喝茶)

 

 

没有评论 (217 views)