说明

文章首发于HURUWO的博客小站,本平台做同步备份发布。

如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览。

原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)直接点击即可前往访问。

整个系列文章链接

PYTHON爬虫实战:垃圾佬闲鱼爬虫、转转爬虫数据整合自用二手急速响应捡垃圾平台(附源码持续更新)-1

PYTHON爬虫实战:垃圾佬闲鱼爬虫、转转爬虫数据整合自用二手急速响应捡垃圾平台(附源码持续更新)-2

PYTHON爬虫实战:垃圾佬闲鱼爬虫、转转爬虫数据整合自用二手急速响应捡垃圾平台(附源码持续更新)-3

前言

本章内容

本章讲解关于fidder数据包转发的问题,也就是拦截了数据之后如何将想要的数据推到指定的数据库做处理。

FidderScript的说明和使用

FidderScript是什么

FidderScript是Fidder针对数据包的请求 回复 修改的脚本语言。通过使用FidderScript编写脚本插入可以完成自动化的 请求修改 转发 回复 修改操作。可以说功能非常强大,喜欢数据采集的人必学。

FidderScript的语法

官方文档: http://fiddler2.com/r/?fiddlerscriptcookbook

其实不用去看官方文档 左边的classview 已经包含了所有的api文档 看看就行

下面说几个常用的类方法:

1.Session 所有请求信息/回复信息的保存处 包括request response都可以做修改。比较核心的一个类方法对象。

2.HTTPRequestHeadersHTTPResponseHeaders headers 的映射类 在Session 提取出来可以做修改变化。

3.关于Fidder 软件本身的一些FidderApplication类方法 比如修改UI的 按钮等 ,甚至可以定制化出来一个自动化工具。这个就不细说了,看看就知道了。

个人感觉这个语言非常类似于java,有对象有类。学习起来并不要多少成本。但是他的功能确实非常强大。

FidderScript一个简单的例子

体验一下一个脚本的完整开发过程。

进入脚本编辑器

两种办法:

方法1.

点击进入FidderScript

展开类图:点击ClassView

如果做了修改点击:Save Script 保存脚本

应用脚本

方法2.

Click Rules > Customize Rules

Rules....Enter FiddlerScript code inside the appropriate function.

Save the file.

推荐第二种方式进入脚本编辑器

修改一下request url

跳转到指定的代码 块和方法体 点击goto 下拉框里选择点击

进入OnBeforeRequest


static function OnBeforeRequest(oSession: Session) { ......
......
......
}

所有的 request信息包含在oSession里面

比如我们做一个 知乎转到百度的重定向

if(oSession.fullUrl.Equals("https://www.zhihu.com/"))
{
oSession.fullUrl = "https://www.baidu.com/";
}

保存运行一下:

神奇的从知乎跳转到了百度了

整个过程非常轻松。

FidderScript 转存闲鱼数据

数据转存的数据存储问题

1.存在本地还是存在云端

2.是否需要搭建一个后端系统处理数据

3.数据如何显示到页面

解决方案

存在云端本地都行,但是搭建一个后台系统非常有必要。

提供一个数据提交的接口做数据提供和数据处理的分离方案。

显示和处理在后台系统(web系统里即可) 处理出来的数据。关于后台系统的搭建后面的文章会介绍,这里假设已经搭建成功。

后台数据接收系统

数据提交接口假设为: http://127.0.0.1:8000/xianyu/

数据提交方式为 POST 数据直接提交原始数据即可,尽量把逻辑处理放在后台

先开启服务:

编写转发脚本

因为闲鱼的测试机子不在身边 暂时先用转发抖音的数据为例子

打开抖音 抓取一下橱窗的商品列表链接

https://api5-normal-c-lf.amemv.com/aweme/v1/promotion/user/promotion/list/?user_id=54512396382&sec_user_id=MS4wLjABAAAAa54-WneSWxYZ24J_00iS-9SwMQkrM3fOYK_sXDYG-lg&cursor=0&count=20&column_id=0&goods_type=0&shop_version=1&storage_type=0&manifest_version_code=110601&_rticket=1611199065509&app_type=normal&iid=17186708527928&channel=meizu&device_type=M1852&language=zh&cpu_support64=true&host_abi=armeabi-v7a&uuid=86908603665928&resolution=1080*2124&openudid=9c8e3e9910b351a8&update_version_code=11609900&cdid=a5182ee3-c5b7-44b9-830f-71ca10dd4b60&os_api=27&mac_address=D8%3A6C%3A02%3AC9%3AB5%3A58&dpi=480&ac=wifi&device_id=70532699303&mcc_mnc=46001&os_version=8.1.0&version_code=110600&app_name=aweme&version_name=11.6.0&device_brand=Meizu&ssmix=a&device_platform=android&aid=1128&ts=1611199065

脚本转发数据包 核心代码:

static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
} if (oSession.fullUrl.Contains("/promotion/user/promotion/list/"))
{
oSession.utilDecodeResponse();//消除保存的请求可能存在乱码的情况 //把内容通过ajax http发送其它地方
var _xhr = new ActiveXObject('Microsoft.XMLHTTP');
var url = 'http://127.0.0.1:8000/xianyu'; //发送的数据参数
var param = oSession.GetResponseBodyAsString() //不需要返回值所以写啦个空回调
_xhr.onreadystatechange = function() {}
_xhr.open('POST', url, true);
_xhr.setRequestHeader("Content-Type", "application/json");
_xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
_xhr.send(param); } }

测试数据接收

点击手机 打开橱窗

api服务器成功获得数据

总结

最后说明一下

autoResponder仅仅只是替换返回包功能 没有修改和保存数据包的功能,以开始我跑偏了。

FidderScript则是一个强大的工具 只有掌握了FidderScript 才能算是真正的掌握了整个Fidder这个软件。

参考文章 资料说明

Fiddler4.6.20 使用script保存请求或响应数据到本地或post到其它地方保存

本项目源码已经上传:https://github.com/HuRuWo/PickUpTrash

PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)的更多相关文章

  1. 13行代码实现:Python实时视频采集(附源码)

    一.前言 本文是<人脸识别完整项目实战>系列博文第3部分:程序设计篇(Python版),第1节<Python实时视频采集程序设计>,本章内容系统介绍:基于Python+open ...

  2. Python的开源人脸识别库:离线识别率高达99.38%(附源码)

    Python的开源人脸识别库:离线识别率高达99.38%(附源码) 转https://cloud.tencent.com/developer/article/1359073   11.11 智慧上云 ...

  3. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

  4. Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)

    在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...

  5. python爬虫-淘宝商品密码(图文教程附源码)

    今天闲着没事,不想像书上介绍的那样,我相信所有的数据都是有规律可以寻找的,然后去分析了一下淘宝的商品数据的规律和加密方式,用了最简单的知识去解析了需要的数据. 这个也让我学到了,解决问题的方法不止一个 ...

  6. Python开发中国象棋实战(附源码)

        Pygame 做的中国象棋,一直以来喜欢下象棋,写了 python 就拿来做一个试试,水平有限,电脑走法水平低,需要在下次版本中更新电脑走法,希望源码能帮助大家更好的学习 python.总共分 ...

  7. Java豆瓣电影爬虫——小爬虫成长记(附源码)

    以前也用过爬虫,比如使用nutch爬取指定种子,基于爬到的数据做搜索,还大致看过一些源码.当然,nutch对于爬虫考虑的是十分全面和细致的.每当看到屏幕上唰唰过去的爬取到的网页信息以及处理信息的时候, ...

  8. python_way day10 python和其他语言的作用域 、 python2.7多继承和3.5多继承的区别 、 socket 和 socketserver源码(支持并发处理socket,多进程,多线程)

    python_way day10 1.python的作用域和其他语言的作用域 2.python2.7多继承和3.5多继承的区别 3.socket和socketserver源码(并发处理socket) ...

  9. 用python的TK模块实现猜成语游戏(附源码)

    说明:本游戏使用到的python模块有tkinter,random,hashlib:整个游戏分为四个窗口,一个进入游戏的窗口.一个选关窗口.一个游戏进行窗口和一个游戏结束的窗口. 源码有两个主要的py ...

  10. Python:游戏:扫雷(附源码)

    这次我们基于 pygame 来做一个扫雷,上次有园友问我代码的 python 版本,我说明一下,我所有的代码都是基于 python 3.6 的. 先看截图,仿照 XP 上的扫雷做的,感觉 XP 上的样 ...

随机推荐

  1. JavaScript闭包之“词法作用域”

    大家应该写过下面类似的代码吧,其实这里我想要表达的是有时候一个方法定义的地方和使用的地方会相隔十万八千里,那方法执行时,它能访问哪些变量,不能访问哪些变量,这个怎么判断呢?这个就是我们这次需要分析的问 ...

  2. 用 vs2013 创建 windows service 程序

    windows services 是运行在后台的服务程序,可以用 vs2013 来创建,创建的步骤如下: 1.打开 vs2013 , Files -->New Project --> wi ...

  3. Java NIO框架Netty demo

    Netty是什么 Netty是一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty 是一个基于NI ...

  4. ZendFramework 环境部署

    查看源码 int_autoloader.php 文件中,发现应用了一个 AutoloaderFactory 的命名空间,路径写得是相对路径,所以需要在 php.ini 中定义一个 inclde_pat ...

  5. winform利用代码将控件置于顶端底端

    有时,我们可能动态的添加控件,并准备将其置于对顶层或最底层.实现的方法有两个: 一种方法是在WinForm窗体中使用Controls控件集的SetChildIndex方法,该方法将子控件设定为指定的索 ...

  6. poj2236无线网络

    这一题的大意:在救灾当中需要用网络,这堆人就用笔记本建了一个无线网,但是来,互相通信都是有距离限制的,一台电脑只能和距离他为d的电脑通信,然后一台电脑也可以通过几台电脑搭成线这样通信.然后就是输入每台 ...

  7. JDBC第四篇--【数据库连接池、DbUtils框架、分页】

    1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的. 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开.关闭连接造成系统性能低下 编写连接池 ...

  8. Java的命名规范

    1.类名.接口名:首单词的第一个字母要大写.如果有多个单词,其他单词的首字母要大写. 2.包名:全部小写. 3.变量名.方法名:首单词的第一个字母小写.如果有多个单词,其他单词的首字母要大写. 4.常 ...

  9. Selenium+PhantomJS使用时报错原因及解决方案

    问题 今天在使用selenium+PhantomJS动态抓取网页时,出现如下报错信息: UserWarning: Selenium support for PhantomJS has been dep ...

  10. openCV 视频分解及合成

    1. 视频分解 import cv2 # ************************** # 分解视频 cap=cv2.VideoCapture('1.mp4')#获取一个视频cap isOpe ...