更多>>关于我们

西安鲲之鹏网络信息技术有限公司从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-11-03 15:24:37
    【经验分享】“selenium + phantomjs”如何正确退出phantomjs进程?
    背景:程序用使用diver.quit()或driver.close()方法退出phantomjs进程偶尔会失败,出现“OSError: Bad file descriptor”异常。经测如下方法可以有效解决问题:

    import signal

    driver.service.process.send_signal(signal.SIGTERM) # kill the specific phantomjs child proc
    driver.quit()      

    感谢Stackoverflow上的无私分享者 >>> http://t.cn/RlbPiCb http://t.cn/RlbPiCU
    PS:如何在selinum里获取phantomjs进程的ID: driver.service.process.pid
    参见 >>> http://t.cn/RlbPiC4

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-30 22:11:01
    谷歌DNS 8.8.8.8现在貌似故障了,在美国无法解析安居客域名,换用114.114.114.114可以:
    dig @8.8.8.8 www.anjuke.com 查询不到(图1);
    dig @114.114.114.114 www.anjuke.com 能查询到(图2); ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-29 17:49:53
    【实践出真知】山东和苏州两地总结出来的经验:pppd持续出现“No response to 3 echo-requests, Serial link appears to be disconnected"可能是宽带接入设备(Modem)负载太大了! ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-28 21:48:39
    【新品发布】正规IDC机房17万IP代理招租,按流量计费,无带宽和并发限制! 遍布世界57个国家,700台专业服务器,每台1C的IP,共计17万IP。支持按国家筛选!默认自动负载均衡!
    点击查看详情 >>> http://t.cn/R0WMsU2

    国家和IP数量如下表:
    Country IP Count
    Turkey 256
    Canada 512
    Madagascar 2560
    Italy 512
    Czech Republic 256
    Iran (Islamic Republic of) 256
    Hungary 512
    Qatar 256
    Luxembourg 256
    France 256
    Slovakia 256
    Ireland 768
    Hong Kong 256
    Nigeria 768
    Bolivia 2816
    Norway 512
    Bangladesh 256
    Israel 512
    Australia 256
    Indonesia 256
    Jordan 256
    Germany 18688
    Nicaragua 2560
    Belgium 512
    China 512
    Iraq 256
    Philippines 256
    Taiwan 256
    Spain 512
    Ukraine 256
    Netherlands 512
    Denmark 512
    Poland 256
    Finland 768
    Saudi Arabia 256
    United States 83712
    Sweden 768
    Vietnam 256
    Kenya 256
    Switzerland 768
    New Zealand 256
    Russia 768
    Brazil 512
    Bulgaria 256
    Romania 512
    Portugal 512
    Mexico 256
    United Arab Emirates 256
    India 50688
    United Kingdom 6144
    Malaysia 256
    Austria 768
    Congo 2560
    Greece 512
    Japan 512
    South Korea 256
    Cyprus 256

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-27 09:56:59
    淘宝外卖(口碑外卖)全国所有城市商户数据2017年9月底更新(62.8万家)。2017年9月底更新。含店招、营业执照和餐饮服务许可证图片文件。 >>> http://t.cn/R0oybU9 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-27 09:55:35
    是谁把我的7777端口占用了? lsof  -i:7777 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-22 21:32:57
    成功绕过淘宝(口碑)外卖签名机制,顺利拿到Ajax返回数据。
    PS:常规模拟浏览器方法无效,需结合抓包。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-22 11:34:07
    Firefox历史版本下载地址:http://t.cn/Rbu2y44
    PS:slimerjs支持Firefox from 38.0 to 52.0. ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-22 10:06:04

    【无关技术】更多的时候是做一个运维,看着爬虫输出的信息越快越开心 西安鲲之鹏的微博视频 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-20 17:23:31
    【经验分享】Chrome V55以后不支持设置页面编码了(不信你试试看)。不过,这货(Set Character Encoding插件)可以帮你实现。 http://t.cn/RaIDInW ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-14 15:10:39
    【经验分享】由于项目需要在Linux Server下将近千万个word文档(*.doc)转换为文本格式(html或txt),经测试效果最好的方法是使用LibreOffice的命令行工具。

    安装:
    sudo apt-get purge libreoffice-core
    sudo add-apt-repository -y ppa:libreoffice/ppa
    sudo apt-get update
    sudo apt-get install libreoffice

    doc转txt示例:
    soffice --headless --convert-to txt test.doc

    doc转html示例:
    soffice --headless --convert-to html test.doc

    关于convert-to参数的更多说明见这里 >>> http://t.cn/RVGwrbi

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-08-17 09:55:51
    搜房网(房天下)全国新房楼盘+二手房小区数据2017年07月份更新(“小区名称”,”城市”,”小区地址”,”项目特色”,”所属区域”,”邮编”,”产权描述”,”物业类别”,”竣工时间”,”开发商”,”建筑结构”,”建筑类别”,”建筑面积”,”占地面积”,”当期户数”,”总户数”,”绿化率”,”容积率”,”物业费”,”停车位”,”开盘时间”,”交房时间”,”小区简介”,”交通状况”,”周边信息”,”经度”,”纬度”,”物业公司”,”价格”,”页面链接”,”地图链接”,”区县”,”商 圈”,”装修情况”,”物业地址”,”入住时间”,”物业类型”,”环比上月”,”详情页链接”,”新房/二手房”,”newcode”) >>> 示例数据:http://t.cn/RCZcOAe

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-08-10 16:03:33
    【经验分享】利用Fiddler2的Custom Rules自动抓取App的TOKEN并记录到文件 >>> http://t.cn/R9RdWc3 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-08-05 10:50:19
    【经验分享】某拨号服务器的Web API接口突然变得不稳定,重启Apache2后正常,但是过不来多久又会挂掉。查看error日志,发现如下信息:
    """
    [mpm_event:error] [pid 54893:tid 140124506744704] AH00484: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
    """
    谷歌查询相关资料得知需要调整/etc/apache2/mods-available/mpm_event.conf中的相关参数,将ServerLimit 从默认的16修改为30,将MaxRequestWorkers修改为750,然后重启Apache,问题得到解决。

    这里有两个坑总结一下:
    1)你不一定也使用的是mpm_event模块(还可能是mpm_worker或mpm_prefork),有两种方法判断。第一种方法是根据日志的提示信息如果是“mpm_prefork:error”那说明是mpm_prefork,这个时候就需要修改的是/etc/apache2/mods-available/mpm_prefork.conf文件;第二种方法是使用"apachectl -M"命令,会显示所有加载的模块,如附图所示我的服务器加载的是mpm_event_module。
    2)MaxRequestWorkers的值的上限取决于ServerLimit * ThreadsPerChild的大小。

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-07-26 14:47:36
    给遨游做个广告。目前支持"S5+认证"代理的浏览器几乎没有,但不是没有,让我来告诉你它就是遨游5。 ​​​​

    阅读全文 + 去微博评论 +