更多>>关于我们

西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效获取互联网任何公开可见信息。

您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。

数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。

更多>>官方微博

西安鲲之鹏
陕西 西安

加关注

  • 【经验分享】playwright/selenium绕过反自动化/爬虫检测最新方案
    原理:是通过在页面加载之前注入js脚本,抹去navigator.webdriver等浏览器自动化特征。
    使用的这个js脚本(stealth.min.js)来源于Github上的puppeteer-extra-plugin-stealth项目(A plugin for puppeteer-extra and playwright-extra to prevent detection.)。

    playwright的示例:
    context.add_init_script(path='stealth.min.js')
    page = context.new_page()
    page.goto("https://bot.sannysoft.com/")

    selenium的示例:
    driver = webdriver.Chrome()
    with open('stealth.min.js', 'r') as f:
    js = f.read()
    driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': js})

    效果检验:
    1. 第一个检验标准,是看是否还会爆出navigator.webdriver等特征,可以直接在控制台查看,也可以通过访问https://bot.sannysoft.com/来查看。例如附图1是未做绕过处理时的截图。
    2. 第二个检验标准,是尝试登录淘宝,看能否成功。如果未做绕过处理,会出现滑块验证码,而且是无法正常处理的那种,无法登录成功。如附图2所示。

    经过测试,上述两项检验标准均通过:即没有爆出navigator.webdriver等特征,也可以成功登录淘宝,不出现滑块验证码。

    另附stealth.min.js的下载地址:
    http://www.site-digger.com/uploads/stealth.min.js
    发布时间:2022-08-10 11:05:15
  • 【经验分享】miller以XTAB格式查看字段内容较多或者字段较多的CSV文件
    示例:mlr --icsv --oxtab --from mouser_products_202208.csv head -n 3
    官方文档:https://miller.readthedocs.io/en/latest/file-formats/#xtab-vertical-tabular

    效果如附图所示。 ​​​
    发布时间:2022-08-10 10:26:30
  • 【分享】"CZ88纯真IP库20220420版" - MySQL版(52万条)免费下载

    数据说明:
    基于”QQ纯真IP库20220420版”转换的MySQL版本,共计529,985条。添加的数字格式的IP段起始和终止字段,可以通过该数据快速查询出某IP的归属国家、位置信息。

    字段说明:
    `ip_start_num` – 起始IP,数字类型(根据ip_start转换)
    `ip_end_num` – 终止IP,数字类型(根据ip_end转换)
    `ip_start` – 起始IP,字符串类型
    `ip_end` – 终止IP,字符串类型
    `country` – 所属国家
    `location` – 所在位置

    用法举例:
    (1)先将待查询IP转为数字类型。例如:
    ip_num = struct.unpack(‘!I’, socket.inet_aton(ip))[0]
    (2)查询”ip_start_num <= ip_num and ip_end_num >= ip_num”的记录,例如SQL语句:
    sql = ‘SELECT country FROM ips WHERE ip_start_num <= %s AND ip_end_num >= %s;’.format(ip_num, ip_num)

    示例数据:
    http://db.site-digger.com/csv/637a38385f6970735f32303232303432305f73616d706c65/

    下载链接:
    http://www.data-shop.net/2014/08/cz88-free-ips-database-20220420-mysql-version-52w/

    应用举例:
    如附图2所示,是使用该数据实现的IP地址归属地查询API。
    发布时间:2022-08-02 12:34:26
  • 【经验分享】一例Squid http认证异常问题的排查
    背景:
    (1)Squid配置的HTTP代理。使用external_acl_type自定义acl脚本进行ip和用户名密码认证,acl通过的放行,否则deny。
    (2)Playwright设置带用户名密码认证的http代理(上述Squid)代理。

    问题:
    curl命令或者requests库测试均工作正常,但是Playwright始终报 NS_ERROR_PROXY_FORBIDDEN错误。

    排查:
    用curl -v命令测试用户名密码不对或者为空情况下squid的返回,如下图所示,返回的是403状态码。意识到问题的所在了,对于浏览器来说,只有当服务端返回407状态码时,才会启用HTTP Proxy Basic Auth认证。此时返回403直接中断了后续认证流程。

    解决:
    自定义的external_acl_type之后,在http_access deny all之前,加入acl auth_user,让其在external_acl_type的ACL匹配失败的情况下能够返回407状态码。

    延伸:
    如何让“浏览器一开始就带上Proxy-Authorization头,这样就能直接通过认证,减少一次407的返回,提高效率。就像request库一样”? 经过测试发现使用一些代理插件,例如SwitchyOmega,可以实现。
    发布时间:2022-06-23 10:58:25
  • 【经验分享】利用HAProxy Runtime API的"set server"命令可以动态修改Haproxy的Backend server。
    例如 将Backend "backendout"的 Server "server1"的地址修改为115.209.110.181,端口修改为32603,执行如下命令即可。
    echo "set server backendout/server1 addr 115.209.110.181 port 32603" | socat stdio tcp4-connect:127.0.0.1:9999

    有两个前提:
    (1)HAproxy 2.0以后的版本才支持 Runtime API。
    (2)在配置文件里要开始 Runtime API的端口。如下配置示例,在9999端口开启Runtime API。
    global
    stats socket ipv4@127.0.0.1:9999 level admin

    详细用法可以参见官方博客里的示例,链接为https://www.haproxy.com/blog/dynamic-configuration-haproxy-runtime-api/
    发布时间:2022-05-22 16:22:21
  • 【经验分享】linux下如何检测某个网口下有ADSL拨号设备信号?
    用途:检测拨号设备是否工作正常,或者网口与拨号设备的连接是否正常。
    方法:可以使用"pppoe-discovery -I eth1"命令,eth1修改为具体要检测的网口。如果对应网口和拨号设备连接正常,将会返回BAS的名称和IP。
    文档连接:https://www.systutorials.com/docs/linux/man/8-pppoe-discovery/

    如附图所示,为分别在连云港联通、南京电信、南昌电信拨号环境下做的测试。
    发布时间:2022-05-10 19:10:47
  • 【经验分享】如何查看客户通过web隧道访问了什么网站?
    Web隧道内传输的数据通常是经过ssl加密的,如何通过抓包查看客户访问了什么网站呢?我们知道Web隧道的建立离不开HTTP的CONNECT方法,因为只要我们过滤CONNECT关键词就能拿到客户连接的目标网址。
    例如,我们通过ngrep进行包过滤,锁定Web隧道服务的端口(本例为65002)
    sudo ngrep -d ens3 -W byline -N -t -q CONNECT port 65002
    PS:ens3 是网口。结果如附图所示。
    发布时间:2022-05-10 16:58:59
  • 【经验分享】如何计算阿里系Ajax请求中的sign签名?
    有过阿里系采集经验的开发者都应该知道,某宝(天猫)H5版、1688、某宝司法拍卖H5版等阿里系网站,在Ajax请求中都会有一个sign签名参数(如下图1、2、3所示),要是值不正确将无法获取到有效的数据(例如返回“非法请求”提示)。如果我们无法构造出有效的sign,就只能通过“模拟浏览器操作”的方式来绕过签名验证,再结合"mitmproxy动态抓包脚本"来提取返回数据,这种方案效率太低,而且很不灵活。本文将介绍如何计算这个sign值以及给出对应的Python实现,这样就能实现通过直接HTTP交互抓取数据。点击链接查看详情>>> http://www.site-digger.com/html/articles/20211018/851.html

    •  
    发布时间:2021-10-18 14:59:23
  • 【经验分享】接上一篇:Android APP内置WebView如何获取当前加载的URL(方法二)?
    这次是直接HOOK android.webkit.WebView类的loadUrl()方法,可以直接得到加载的URL。同时也可以再loadUrl()内调用setWebContentsDebuggingEnabled(true)开启远程调试。效果如附图所示,这是某宝APP内嵌的H5页面,成功获取到了URL并且在inspect中能看到对应的WebView窗口(开启该WebView的远程调试成功)。

    // 查看WebView加载的URLs并启动远程调试
    Java.use("android.webkit.WebView").loadUrl.overload("java.lang.String").implementation = function (s) {
    console.log('WebView.loadUrl():' + s);
    console.log('Set webview DebuggingEnabled!');
    this.setWebContentsDebuggingEnabled(true);
    this.loadUrl.overload("java.lang.String").call(this, s);
    };
    发布时间:2022-05-06 13:31:47
  • 【经验分享】Android APP内置WebView如何获取当前加载的URL?
    (1)使用Firida强制其开启WebView的远程调试,以某司法拍卖APP为例,执行如下代码后。
    Java.perform(function() {
    var WebView = Java.use("com.uc.webview.export.WebView");
    WebView.setWebContentsDebuggingEnabled(true);
    }
    );
    (2)通过adb forward命令把WebView的Unix域套接字映射为本地端口,详细步骤可参见我们的这篇文章http://www.site-digger.com/html/articles/20220414/860.html
    (3)通过WebView的远程调试接口即可看到当前Tab的JSON数据,如附图所示,其中就有URL信息。
    发布时间:2022-05-06 13:04:25
当前位置: 首页 > 公司微博 >
  • 西安鲲之鹏

    发布时间:2017-03-14 17:32:29
    【域名NS记录查询】
    Windows:
    nslookup –qt=NS 目标域名

    Linux:
    host -t NS 目标域名

    参考文章:http://t.cn/zQJFraU http://t.cn/RGIQcyC ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-03-12 19:50:16
    【一个cron计划任务引发的血案】近日某Ubuntu14.04服务器上mongodb老自动挂掉,观察一段发现系统内存严重不足,swap都快被用完了,如图一所示,mongodb在内存耗尽的时候就挂掉了。很奇怪,到底是什么进程占用了这么多内存呢?

    参考这篇文章里的方法 Linux: Find Out What Process Are Using Swap Space > http://t.cn/RinTwWY

    执行如下命令,查看哪些进程使用了swap,并按使用量大小排列:
    for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less

    这一看不打紧,发现里面有大量的python进程。
    再用ps aux |grep python一看,一身冷汗,有3899个python进程!如图二所示。

    可以断定内存就是被这些进程给吃完了!
    PS:这是一个每分钟启动一次的计划任务,功能是实现一个动态域名解析客户端。应该是脚本用的访问网络的操作卡住了(系统默认无限等待)造成进程无法退出,久而久之累积出来了几千个后台进程...

    杀掉这些进程,修复Bug。现在内存使用看起来正常了,如图三所示。

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-03-10 22:26:15
    MySQL抓包工具 - MySQL Sniffer: MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer 端的请求,并格式化输出。>>>  详细介绍http://t.cn/RiQAESc
    Ubuntu14.04下试了一下,效果很赞(如下截图)。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-02-22 14:07:44
    如何避免SSH时出现“Write failed: Broken pipe”?
    ssh -o ServerAliveInterval=60 user@host
    更多方法 >>> http://t.cn/zYc5wR1 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-02-18 16:24:05
    PPPOE拨号引发“Couldn't allocate pseudo-tty”问题,表现:
    1)SSH连接卡主(无法正常建立连接),提示:“request failed on channel 0”。
    2)日志出现大量:“Couldn't allocate pseudo-tty”。
    谷歌得知原因:pseudo-terminals数量超过系统最大限制。
    临时处理方法:增加pseudo-terminals最大数量,具体步骤>>> http://t.cn/RJnUJxD

    1. 如何查看系统当前pseudo-terminals数量:
    ls /dev/pts|wc -l
    参考文章:http://t.cn/RJnUJxk

    2. 查看当前系统允许的最大pseudo-terminals数量:
    cat /proc/sys/kernel/pty/max

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-02-16 12:34:53
    【专治疑难杂症】Selenium + IEDriver出现“Internet Explorer has stopped working”或"Internet Explorer 已停止工作"对话框如何解决? >>> http://t.cn/RJjndCS

    Turn Off The Error Dialog Via The Registry

    Although editing the registry manually is not recommended for average users, sometimes there isn’t a choice because something like the Group policy Editor might not be available in your version of Windows or the group policy method itself doesn’t work. This works on Windows Vista and above.

    Open the Registry Editor by typing regedit into the Start search box or the Win+R Run dialog.
    Navigate to the following registry key:
    HKEY_CURRENT_USER\Software\Microsoft\Windows\Windows Error Reporting

    Double click the DontShowUI entry on the right and change its value to 1, then close the registry editor.

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-02-08 19:44:38
    【经验分享】如何使用SPSS查看大CSV文件(超过100万行)? >>> http://t.cn/RJb48R1 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-02-08 19:05:12
    【专治疑难杂症】pyautogui在Windows下鼠标左键按下动作pyautogui.mouseDown()引发“WindowsError: [Error 5] 拒绝访问。/ WindowsError: [Error 5] Access is denied.” 异常解决方法:注释掉_pyautogui_win.py文件L479-L480行。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-01-26 11:40:16
    Google Maps Geocoding API使用限制: 2,500 free requests per day。
    >>> http://t.cn/RxVL66t
    使用稳定高匿名HTTP代理可以绕过该限制,例如200个IP就可以达到50万每天的查询速度。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-01-23 11:43:20
    【备忘】Chrome查看页面源码快捷键 Ctrl + U;Chrome进入隐私模式快捷键 Ctrl + Shift + N ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-01-20 20:55:19
    完善Python版的pppoe-status,实测比原版可靠(修复rp-pppoe-3.12中的pppoe-status误判失败的问题) >>> http://t.cn/RMsiLHd ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-01-16 09:46:59
    【纯干货】鲲之鹏微信小程序数据抓取示例 >>> http://t.cn/RMYalt4 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-01-12 12:36:58
    Ubuntu下7z压缩、解压文件:
    sudo  apt-get install p7zip-full

    【压缩文件】:
    7z a -t7z -r manager.7z /home/manager/*
    解释:
    a 代表添加文件/文件夹到压缩包;
    -t 是指定压缩类型 一般我们定为7z;
    -r 表示递归所有的子文件夹;

    【解压文件】
    7z x manager.7z -r -o/home/xx
    解释如下:
    x 代表解压缩文件,并且是按原始目录解压(还有个参数 e 也是解压缩文件,但其会将所有文件都解压到根下,而不是自己原有的文件夹下)manager.7z 是压缩文件,这里大家要换成自己的。如果不在当前目录下要带上完整的目录;
    -r 表示递归所有的子文件夹;
    -o 是指定解压到的目录,这里大家要注意-o后是没有空格的直接接目录;

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-01-09 17:33:07
    最近某机器上的Squid服务老是自动挂掉,日志也没看出问题...
    只能先临时曲线救国:通过计划任务定时检测squid进程是否存在,如果不存在执行sudo service squid start来启动服务。检测脚本我是用Python写的(Shell不熟悉),分享在这里:http://t.cn/RMM2N8v
    PS:我本来用supervisor实现的,结果老是提示squid进程异常退出,就放弃了。

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-01-06 15:14:04
    【SecureCRT自动SSH跳转配置】友商设备限制了只允许我们的特定的IP能访问,每次都要先SSH到该IP,然后再SSH跳转到目标机器。每次都要输入一遍ssh user@host 和 密码,非常麻烦。利用SecureCRT Logon Actions(登录动作)里的Automate logon(自动登录)可以自动化完成该操作(输入ssh user@host 和 密码),这里有篇图文并茂的文章介绍。 >>> OSecureCRT的logon action登录跳转设置

    阅读全文 + 去微博评论 +