更多>>关于我们

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

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

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

更多>>官方微博

西安鲲之鹏
陕西 西安

加关注

  • 【分享】大众点评各城市POI数据量统计结果列表
    数据来源:大众点评APP,各城市全分类商户列表;
    更新时间:2020年1月;
    数据总量:共计2459个“城市”,其中一级城市370个,含港澳台。

    大众点评全国全分类在营业POI数据量有多少?
    根据370个一级城市统计结果加总显示有3922万条。

    数据下载地址:
    http://t.cn/A65VyV16
    •  
    发布时间:2021-01-27 13:25:42
  • 【经验分享】使用urllib2时如何防止自定义的header被capitalization。

    例如,程序里写的'x-requested-with',但是发出去的包里却变成了'X-Requested-With'(如附图)。

    解决方法,自定义一个str类的子类,重写title和capitalize方法(如下)。
    class SafeString(str):
        def title(self):
            return self

        def capitalize(self):
            return self

    然后在赋值的时候这样写即可:
    headers[SafeString('x-requested-with')] = 'test'
    PS:这样urllib在调用SafeString('x-requested-with')的title方法时候,就直接原样返回了。
    发布时间:2020-12-17 10:54:32
  • 【经验分享】com.sankuai.meituan.takeoutnew在/sdcard/Android/这里藏有猫腻,如图 ​​​​
    发布时间:2020-11-24 11:23:25
  • 【经验分享】如何通过adb给安卓APP授权?
    背景:自动操作APP时,APP在首次启动(刚安装完或者被pm clear之后)可能会出现授权提示(例如,允许获取当前位置),打断了自动化操作流程,如何实现自动化授权呢?

    在启动APP之前,先通过adb命令给APP授予所需的权限即可,命令如下:
    adb shell pm grant <packageName> android.permission.READ_CONTACTS
    上述命令是给APP授予“读取联系人”的权限,更多的权限列表参见这里:
    https://blog.csdn.net/HardWorkingAnt/article/details/70952583

    经过授权之后,APP启动时就不会再弹出授权提示框了。
    发布时间:2020-11-20 16:35:43
  • 【备忘】curl --help|grep socks
         --socks4 HOST[:PORT]  SOCKS4 proxy on given host + port
         --socks4a HOST[:PORT]  SOCKS4a proxy on given host + port
         --socks5 HOST[:PORT]  SOCKS5 proxy on given host + port
         --socks5-hostname HOST[:PORT]  SOCKS5 proxy, pass host name to proxy(重点)
         --socks5-gssapi-service NAME  SOCKS5 proxy service name for GSS-API
         --socks5-gssapi-nec  Compatibility with NEC SOCKS5 server
    发布时间:2020-11-06 18:02:39
  • 【经验分享】如何"准确"查询一个ip的归属地?
    查询IP归属地最常用的方法是通过类似iplocation.net的工具网站进行查询,但是他们的数据库可能存在错误或者更新不够及时,导致查询结果错误。

    下面举两个例子:
    (1)91.214.188.126这个IP是一台美国服务器的IP,但是iplocation.net确显示为“荷兰(Netherlands)”,如附图1所示。
    (2)89.37.58.254这个IP是一台日本服务器的IP,但是iplocation.net确显示为“罗马尼亚(Romania)”,如附图2所示。

    有什么办法能"准确"查询一个ip的归属地呢? 可以采用路由追踪的方法,查看路由的最后几跳所在的位置。
    (1)例如附图3所示,是对91.214.188.126的路由追踪结果,可以看到数据最终跑到了美国,因此它肯定是一个美国IP。
    (2)再例如附图4所示,是对89.37.58.254的路由追踪结果,可以看到数据跳到了日本,因此它肯定是一个日本IP。

    PS:这个图像化的路由追踪工具叫做Best Trace。
    另外也可以使用这个traceroute这个在线工具>>>http://t.cn/E51F76C
    发布时间:2020-10-22 10:45:42
  • 【逆向分析】CMCC“和助手”APP(2.9)HTTP加密方式分析
    1. 直接抓包会发现“和助手”的请求和应答数据都是加密的。如附图1所示。
    下面来分析下加解密算法,最终目的是实现直接和服务端进行HTTP交互。

    2.APP运行后会释放gatewayClient-2-9目录,里面是HTML和JS文件。通过JS里的关键词得知,“和助手”采用的WADE-MOBILE框架。奇怪的是关于WADE-MOBILE网上的介绍很少,只找到这篇有用的介绍http://www.docin.com/p-2187443660.html,大体了解到这个框架使得安卓APP能够使用HTML+JS实现前端展示,通过JS代码调用安卓API实现业务功能(比如与服务端交互)。

    3. 从common.js中的callSvc(),追踪到mobile-client.js中的Mobile.dataRequest(),继续追踪到wade-mobile.js中的WadeMobile.dataRequest(),继续追踪到 androidExecute(),最后追踪到mobile-core.js中的PluginManager.exec()。JS里通过PluginManager.exec()来实现调用安卓Java代码里的功能。如附图2所示。

    4. 通过PluginManager.exec()调用的函数名,在Java代码中可以寻找到具体的实现。例如"dataRequest",应该是实现后台交互的。在Java代码中找到dataRequest()的实现如附图3所示。

    通过进一步跟踪,在transPostData()中可以看到HTTP参数的封装过程,如附图4所示。
    这里的key是DES的秘钥,发给服务端用于解密客户端数据。data是要发送的数据部分,也被使用MobileSecurity.requestEncrypt()加密了。

    需要注意的是这个key本身也是经过加密的,查看MobileSecurity.getDesKey()代码如附图5所示,这里key的值是经过RSA加密的(公钥位于res\raw\public_key)。另外,这里的key并不是固定的,是在每次MobileSecurity类初始化的时候随机生成的,如附图6所示。
    另外,DESKeySpec(k)时,如果k的长度如果超过8字节,将只取前8字节。

    应答数据的解密是通过MobileSecurity.responseDecrypt()实现的,附图7和8所示。

    梳理一下“和助手”的加解密流程:
    (1)APP每次会生成一个随机的key用于DES加解密。
    (2)HTTP请求时会把key作为一个参数(使用RSA加密后)传递给服务端,同时将其它数据通过DES加密后放到data参数中。
    (3)服务端接收到数据后,先用RSA私钥解密出key的明文,然后根据key再DES解密出data明文。
    (4)服务端将HTTP应答数据也使用该key进行DES加密后回送。
    (5)客户端收到HTTP应答数据后使用该key进行DES解密。

    如附图9所示,是我们对服务端应答数据解密后的一个示例(中文部分显示为乱码)。
    发布时间:2020-10-21 15:07:39
  • 【疑问】Intel的CPU比AMD的CPU对安卓模拟器的支持更好?同一个版本的安卓模拟器、同一个APP、同样的HOOK代码,在Intel下稳定运行,但在客户的AMD下出现各种各样的问题(应用闪退、应用崩溃、桌面卡死)。然后让客户换了一个Intel的环境试了下,没任何问题。 ​​​​
    发布时间:2020-10-20 17:24:47
  • 【经验分享】如何查询一个代理(IP)是机房IP(Datacenter IP)还是家庭IP(Residential IP)?

    这里推荐一个查询网站:IPHub,网址是http://t.cn/A6bOvWpt
    输入待查询的IP,点击“Lookup”按钮。
    1. 如果查询结果Type字段中含有“Residential”字样,则说明是家用IP。如附图1、2所示。
    2.如果查询结果Type中仅含有“Hosting”字样,而无“Residential”字样,则说明是机房IP。如附图3所示。

    顺便说一下,如果你的业务需要使用家庭IP(使用机房IP会被风控),例如做亚马逊测评。可以戳这里购买 >>> http://t.cn/A6bOvWpq
    发布时间:2020-10-16 19:57:48
当前位置: 首页 > 公司微博 >
  • 西安鲲之鹏

    发布时间:2017-04-16 18:38:18
    【问题概述】www.momondo.com.cn这个网站用了一个简单但有效的策略来检测客户端是否是真实的浏览器。虽然花了我不少时间,但还是赞一个。
    【问题描述】你可以试一下直接curl Omomondo - 全球机票酒店搜索,会发现始终得不到网站的响应;可以再试下用Python的urllib2库,一样获取不到内容。但是在浏览器内访问却始终正常。是不是很奇怪?看来它可以有效判断出是否是真实的浏览器。
    【解决方案】经过抓包对比,最终找出了它的方法。它主要检测了如下三点:
    1)User-Agent不能为空,也不能使用众所周知的非浏览器UA,例如"curl/7.27.0"。要伪装成一个真实的浏览器UA。
    2)不能为HTTP短连接,也就是必须要指定“Connection: keep-alive”(伪造这个头即可,不需要真正支持长连接)。
    3)Accept-Encoding不能为空,可以随便指定一个客户端支持的编码。
    最后这样测试,你会发现成功通过了网站的检测:
    curl -v -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36" -H "Connection: keep-alive" -H "Accept-Encoding: nothing" Omomondo - 全球机票酒店搜索(如截图所示)

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-03-18 21:06:55
    【一款大家都说好用的命令行带宽测速工具】
    >>> http://t.cn/zRjecv4
    PS:经过我在多地服务器上测试,结果还是挺准确的,特别是上传测速。speedtest.net全球众多的测速节点功不可没。

    只需要两步:
    1)下载这个工具
    wget http://t.cn/RiU1R0b
    2)启动
    python speedtest.py

    具体效果见下面附图。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-03-16 14:18:45
    【腾讯这是要放弃SmartQQ的节奏吗?】
    如图所示。消息丢失率很高,抓包可见poll2请求大量504(timeout)错误。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-03-15 12:58:18
    【pssh实在太酷了】
    图一:我通过pssh了解20台Linux服务器的负载情况,cool!
    图二:我通过pssh结合pslurp完成了20台Linux服务器重要数据文件的“批量打包、批量取回、批量删除远程备份”的操作,cool!

    参考资料:
    http://t.cn/RidpWFN
    http://t.cn/RidpWFp ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

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

    阅读全文 + 去微博评论 +

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

加微信咨询