更多>>关于我们

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

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

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

更多>>官方微博

西安鲲之鹏
陕西 西安

加关注

  • 【经验分享】Linux server(headless模式)下Android模拟器的实现。

    现在越来越多的采集项目(采集APP数据)需要用到安卓模拟器了,然而市面上还没有支持Linux server(headless模式)下运行的安装模拟器,太遗憾了(因为公司大多数服务器都是Ubuntu server版本)。

    我们可以使用KVM + Android x86版系统来实现:

    1. 安装配置KVM。关于KVM在Ubuntu server下的安装配置步骤,详见我们去年的这篇文章:http://t.cn/EGdGjVE
    2. Android x86是支持运行于 x86 PC上的Android操作系统。下载Android X86 系统安装ISO文件,下载地址:https://osdn.net/projects/android-x86/releases,我测试的是android-x86-6.0-r3.iso。
    3. 创建KVM虚拟硬盘:
    qemu-img create -f qcow2 ./android60-1/android.img 10G
    PS:磁盘大小10GB,虚拟磁盘文件存储路径./android60-1/android.img(后面要用到)。
    4. 创建好网桥br0(直连主机外网,如附图1所示)。让虚拟机通过桥接模式上网,这样我们就可以很方便的从外网使用adb连接5555端口,进行远程控制。网桥的配置方法详见http://t.cn/EGdGjVE
    5. 启动KVM虚拟机,安装Android x86系统:
    qemu-system-x86_64 -enable-kvm -m 2048 -smp 4 -cdrom "android-x86-6.0-r3.iso"  -hda "./android60-1/android.img" -net nic,model=virtio,macaddr=00:16:3E:51:CC:10 -net bridge,br=br0  -vnc :2

    PS: 2048M内存,4核CPU,光驱链接系统安装镜像文件android-x86-6.0-r3.iso,指定虚拟机使用00:16:3E:51:CC:10这个MAC,使用网桥br0,指定VNC端口为5900 + 2 = 5902。

    执行上述命令之后,就可以通过VNC连接5902端口,进行系统安装了,安装过程很简单,跟其它Linux发行版安装过程类似:先是分区,格式化磁盘,然后写入文件,重启(如附图2所示)。
    6. 系统好之后,再次运行上述命令(注意要把-cdrom相关参数去掉,否则默认还会从光盘启动),首次进入系统,需要完成系统初始化配置。

    PS:需要注意的是,如果卡到WIFI配置那里了(提示无法连接网络,安装向导无法连接到谷歌,原因你懂的),可以先关掉网络,方法是按Alt + F1,进入安装命令行模式(可以ping www.baidu.com,发现网络其实是通着的),执行ifconfig eth0 down断掉网络(如附图3所示),然后再按Alt + F7恢复图形模式,继续完成向导即可。

    7. 配置好一个安卓虚拟机之后,我们可以直接通过复制多个虚拟磁盘文件android.img,启动多个安卓系统。注意:要指定不同的MAC地址,和不同的VNC端口。

    如附图4和5所示,我配置好一个虚拟机,安装上所需的各种APP之后,通过直接复制android.img,又启动了2个MAC地址不同的安卓模拟器。

    如附图6所示,通过adb远程连接上各安卓虚拟机(模拟器)。
    发布时间:2019-07-10 17:08:14
  • 【经验分享】美团外卖APP在siua头里隐藏了什么信息?
    1. 美团外卖发出的HTTP请求头里有个叫做siua的头(如图1所示),它是什么鬼?
    2.反编译APK,一路跟踪,找到了startCollection(),如图2所示。就是它了。
    3. 通过Xposed HOOK上述函数,成功获取到明文数据(如下所示)。也如图3所示。

    1.0}}MSM8974|Xiaomi|cancro_wc_lte|cancro|KTU84P|zh|CN|Xiaomi|MI 4LTE|4.4.4|19|release-keys|Xiaomi/cancro_wc_lte/cancro:4.4.4/KTU84P/99.12.4:user/release-keys|qcom|qh-miui-ota-bd58|user|cancro|armeabi-v7a|armeabi|cancro-user 4.4.4 KTU84P 99.12.4 release-keys|1|0|}}mtp,adb|mtp,adb|mtp,adb|MPSS.DI.3.0-525eb9a|Qualcomm RIL 1.0|wlan0|ABSENT||1|1|1|1|1|1|1|1|0|1|1|1}}ARMv7 Processor rev 1 (v7l)|Qualcomm MSM8974PRO-AC|4|Accelerometer|STMicroelectronics|Gravity|Qualcomm}}866500021425311|-|-|1920*1080|12GB|12GB|7c:1d:d9:76:af:f9||wifi}}-|0|-1.0|0|0||79d072a8-59fc-4ace-b45e-1b386d8de712}}0|0|0|-}}Android|com.sankuai.meituan.takeoutnew|5.12.3|19|-|2019-06-25 14:00:34:034}}0.0|0.0|KUNZHIPENG|0c:4b:54:da:bd:80|1|-46|-|-|-|}}

    我们来看看这里面包含有什么信息:
    手机品牌、型号、安卓版本号、IMEI码、WLAN的MAC地址、热点名称、热点的MAC地址(如图4所示,和路由器铭牌一致)、手机屏幕尺寸、存储空间...
    发布时间:2019-06-28 16:27:07
  • 【经验分享】如何快速从APK中获取AES秘钥和IV?
    (1)如图1所示,是通过脱壳和反编译获取到的,用时约1小时。
    (2)如图2所示,是使用Xposed + CryptoFucker勾出来的,用时10分钟。
    详细过程见 >>>  http://t.cn/Aip4E9KW ​​​​
    发布时间:2019-06-22 14:21:11
  • 【经验分享】如果动态修改Android设备的代理,如何程序化设置安卓设备的HTTP代理? >>> 详见 http://t.cn/Aip4HUaM ​​​​
    发布时间:2019-06-22 14:11:35
  • 【经验分享】美团外卖APP采集
    1. 如何根据poiId打开店铺详情页?
    adb shell am start -a android.intent.action.VIEW --el poiId 1000651254601802   -n com.sankuai.meituan.takeoutnew/.ui.poi.shop.RestaurantActivity
    效果如图1所示。

    2. 如何截获App返回的应答数据(JSON)?
    使用Xposed勾住parsejson()方法。
    效果如图2所示。
    发布时间:2019-06-20 14:03:02
  • 【经验分享】iostat -d -x -k 1查看某个硬盘的IO一直是100%,如何定位是哪个程序造成的呢? 使用sudo iotop -aoP命令即可,如图所示。 ​​​​
    发布时间:2019-05-29 18:38:49
  • 【经验分享】Apache2如何设置文件的Content-Type值?

    例如,我想给所有的*.pem证书文件,都设置Content-Type为"pplication/x-x509-ca-cert"。
    经查,可以使用ForceType指令,示例如下:

    <FilesMatch "\.pem$">
      ForceType application/x-x509-ca-cert
    </FilesMatch> ​​​​
    发布时间:2019-05-28 15:44:17
  • 【经验分享】如何使用adb检测系统是否安装了某个APP?
    如下所示,判断是否安装了抖音:
    adb shell pm list packages |grep com.ss.android.ugc.aweme ​​​​
    发布时间:2019-05-24 09:39:20
  • 【经验分享】如何破解叮当快药的签名算法? >>> http://t.cn/EoAltBU ​​​​
    发布时间:2019-05-05 17:11:14
  • 【经验分享】抖音的附近功能是根据什么定位的呢?(请求的参数中并没有找到经纬度相关的参数)  经过实测发现是根据IP地址定位的。用西安的代理IP返回的就是西安的,用苏州的代理IP返回就是苏州的,用宿迁的代理IP返回的就是宿迁的。如下截图所示。 ​​​​
    发布时间:2019-04-18 13:42:20
当前位置: 首页 > 公司微博 >
  • 西安鲲之鹏

    发布时间:2018-03-27 17:53:06
    淘宝hws接口3月24号被封!爬虫需要对应做升级。 ​​​​

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2018-03-06 09:54:01
    腾讯宜出行数据无人值守抓取 >>> http://t.cn/REYpwSH ​​​​

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2018-03-02 15:18:57
    【经验分享】Selenium + Firefox,设置firefox_profile参数后启动提示“Message: "Can't load the profile. Profile Dir...”异常。降低Firefox版本(V17)后问题解决。 ​​​​

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2018-02-01 22:16:32
    【经验分享】如何用JS获取CSS :before 伪元素的content值?
    e.g.某网站用CSS :before 伪元素将部分内容进行了“保护”(通过加密的JS动态生成类似如下的CSS伪元素展示信息),常规HTTP交互方法将获取不到内容(注意该CSS属性是加密的JS动态生成的)。
    .anti_spider_txt:before {
        content: '反采集的内容';
    }

    用模拟浏览器方式执行JS即可突破:
    window.getComputedStyle(
    document.querySelector('.anti_spider_txt'), ':before'
    ).getPropertyValue('content');

    PS:如果网站用JS屏覆盖对象的getPropertyValue方法和其它属性,上述方法将失效。
    不过可以通过中间人代理将对应JS代码屏蔽掉,该思路已通过验证。

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2018-02-01 21:47:27
    【经验分享】Python如何获取字体文件内包含的所有文字编码?
    from fontTools.ttLib import TTFont
    font_path = './fonts/205a5cc78d8914cd4a3f65bd99ff97e0.ttf'
    font = TTFont(font_path)
    print font.getGlyphOrder()
    输出如下:
    ['.notdef', 'uniEDA5', 'uniED53', 'uniEE06', 'uniEDB5', 'uniEC74', 'uniED27', 'uniECD6', 'uniED89', 'uniEC48', 'uniEDEB', 'uniECAA', 'uniEC58', 'uniED0C', 'uniEDBF', 'uniED6D', 'uniEC2D', 'uniECE0', 'uniEC8E', 'uniED42', 'uniECF0', 'uniEDA3', 'uniEC63', 'uniEE05', 'uniECC4', 'uniED78', 'uniED26', 'uniEDD9', 'uniED87', 'uniEC47', 'uniECFA', 'uniECA8', 'uniED5C', 'uniEC1B', 'uniEDBD', 'uniEC7D', 'uniEC2B', 'uniECDE', 'uniED92', 'uniED40', 'uniEDF3', 'uniECB3', 'uniEC61', 'uniED14', 'uniECC3', 'uniED76', 'uniEC35', 'uniEDD8', 'uniEC97', 'uniED4A', 'uniECF9', 'uniEDAC', 'uniED5A', 'uniEC1A', 'uniECCD', 'uniEC7B', 'uniED2F', 'uniEDE2', 'uniED90', 'uniEC50', 'uniEDF2', 'uniECB1', 'uniED65', 'uniED13', 'uniEDC6', 'uniEC86', 'uniEC34', 'uniECE7', 'uniEC95', 'uniED49', 'uniEDFC', 'uniEDAA', 'uniEC6A', 'uniED1D', 'uniECCB', 'uniED7F', 'uniED2D', 'uniEDE0', 'uniECA0', 'uniEC4E', 'uniED01', 'uniED63', 'uniEC22', 'uniEDC4', 'uniEC84', 'uniED37', 'uniECE5', 'uniED99', 'uniEDFA', 'uniECBA', 'uniEC68'
    ]

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2018-01-24 09:50:57
    【经验分享】让curl自动解压gzip应答:curl --compressed "http://t.cn/hrfhaz"   >>> http://t.cn/RQmBIJE
    附图:
    1)图1,未加--compressed参数,显示乱码,因为网站返回的gzip内容未被解压。
    2)图2,加上显示乱码参数,显示正常。 ​​​​

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2018-01-22 15:43:27
    【经验分享】Python读取火狐的SQLite文件,提示"sqlite3.DatabaseError: file is encrypted or is not a database"异常。用SQLite阅读器打开正常。解决方案:下载最新版的sqlite3.dll文件(http://t.cn/hj5v5)覆盖到python27/DLLs内,问题解决。 参考文章: http://t.cn/RQQApNy ​​​​

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2018-01-06 13:16:42
    Ubuntu server下查看磁盘温度:  sudo hddtemp /dev/sda(具体设备),如附图所示。如果无温度传感器,会提示“it doesn't have a temperature sensor”. ​​​​

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2017-12-25 08:31:00
    【经验分享】设置Mac Mini加电后自启动: sudo setpci -s 0:1f.0 0xa4.b=0
    实测成功。其它方法参考 >>> http://t.cn/RH2C60b ​​​​

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2017-12-12 19:03:00
    Ubuntu14.04 64bit下Firefox试了好多版本出现“Couldn't load XPCOM”错误无法正常运行,最后发现firefox-45.0(http://t.cn/RTVXIpO)可以正常工作。 ​​​​

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2017-12-06 15:44:12
    【经验分享】Win10远程桌面提示"由于安全设置错误, 客户端无法连接到远程计算机”问题(如附图1所示)解决:
    1. 运行secpol.msc打开“本地安全策略”。
    2. “本地策略 -> 安全选项 -> 系统加密:将FIPS算法用于加密 、哈希和签名”右键属性,将“本地安全设置”设置为“已禁用”,“应用”并”确定”。(如附图2所示)
    问题解决。

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2017-11-23 13:13:06
    [携程网]全国所有城市酒店数据(含经纬度及各房型价格,46w条)2017年11月份更新 >>> http://t.cn/RYwuFGH ​​​​

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2017-11-21 10:36:35
    4TB移动硬盘,Ubuntu下fdisk -l看不到,换用 parted -l解决。 ​​​​

    阅读全文 +

  • 西安鲲之鹏

    发布时间:2017-11-21 10:24:06
    基于Ubuntu 14.04版本的鲲鹏拨号服务器定期会死机,syslog日志如截图所示,不得不计划任务定期reboot。16.04版本测试了几个月还没出现死机的情况,后面计划不再使用14.04版本。 ​​​​

    阅读全文 +

  • 西安鲲之鹏

    发布时间: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

    阅读全文 +

QQ在线客服
欢迎咨询,点击这里给我发送消息。
欢迎咨询,点击这里给我发送消息。

加微信咨询