更多>>关于我们

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

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

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

更多>>官方微博

西安鲲之鹏
陕西 西安

加关注

  • 【经验分享】QEMU/KVM如何修改开机启动顺序?
    virsh edit name-of-vm-instance
    如下示例:
     <os>
        <type arch='x86_64' machine='pc-i440fx-xenial'>hvm</type>
        <boot dev="network"></boot>
        <boot dev="cdrom"></boot>
        <boot dev="hd"></boot>
        <bootmenu enable='yes'/>
      </os>
    
    bootmenu的enable设置为yes,就可以在启动的时候按F12选择启动设备。
    •  
    发布时间:2024-03-12 11:51:28
  • 【经验分享】使用VNC远程连接KVM虚拟机,鼠标不同步而且偏移很大(想砸掉鼠标冲动的那种)问题解决:
    (1)编辑虚拟机配置文件,例如sudo virsh edit win10_1,然后将<input type="mouse" bus="ps2" />修改为<input type="tablet" bus="usb" /> 。
    (2)强制关闭虚拟机win10_1然后重启,问题解决。
    发布时间:2024-03-13 09:26:51
  • 【经验分享】Frida里Java.choose找到某个类的实例,在调用该实例方法时出现“script should be invoke on MainThread”问题的解决:

    // Assign the javascript code to a variable.
    jsCode = """
    // Create a method called Cheese that will be exported.
    function Cheese()
    {
    // Perform the code from injected context.
    Java.perform(function ()
    {
    // Variable to store the view representing the button
    // to click programmatically.
    var view;
    // Define the Runnable type javascript wrapper.
    var Runnable = Java.use("java.lang.Runnable");

    // Find the MainActivity class in myApp.
    Java.choose("com.example.myApp.MainActivity",
    {
    // Once it has been found execute the following code.
    onMatch: function(instance)
    {
    // Get the view representing button to click.
    // 2131436712 id derived from decompiling app.
    view = instance.findViewById(2131436712);
    // Define a new class that implements Runnable and provide
    // the implementation of the run() method which, will
    // execute from the Main thread.
    const MyRunnable = Java.registerClass({
    name:'com.example.MyRunnable',
    implements: [Runnable],
    methods: {
    // run executes button click.
    run(){
    instance.onClick(view);
    },
    }
    });

    // Create an instance of the class just created.
    var MyGuiUpdate = MyRunnable .$new();
    // Schedule the run method in MyGuiUpdate to
    // execute on the UI thread.
    instance.runOnUiThread(MyGuiUpdate );

    },
    onComplete:function(){}
    });
    解决方法来源:https://stackoverflow.com/questions/65790594/calling-an-api-to-modify-an-apps-gui-from-non-main-thread-in-frida
    发布时间:2024-02-23 13:00:33
  • 【经验分享】Frida script中如何给Java的Long类型变量赋值?
    例如,某Java类中有如下Long类型变量定义:
    /* renamed from: e */
    public Long f90137e;

    尝试修改e的值,依次做如下测试:
    (1)classObj.e.value = 1978705204; 会报"Error: Expected value compatible with java.lang.Long"错误。
    (2)classObj.e.value = Java.use('java.lang.Long').parseLong.overload('java.lang.String').call(Java.use('java.lang.Long'), "1978705204");依然会报上述错误。
    (3)这个方法可以成功赋值:classObj.e.value = Java.use('java.lang.Long').$new(1978705204);
    发布时间:2024-02-21 21:45:47
  • 【经验分享】miller使用filter查询条件,当遇到字段含有空格或者其它特殊字符时怎么处理?如下示例中某个字段含有点号,直接查询会报错。解决方法如下:

    示例:mlr --icsv --oxtab --from mouser_products_202312.csv filter '${Mfr.}=~"TDK" || ${Brand}=~"TDK"' then count

    使用Pandas时,也有类似问题,解决方法:
    df[df['Brand'].str.contains("TDK")|df['Mfr.'].str.contains("TDK")]
    另外,Stackoverflow(https://stackoverflow.com/questions/50697536/pandas-query-function-not-working-with-spaces-in-column-names)上有人说可以用`字段`将字段包裹起来,例如:a.query('`a b` == 5') ,但是需要Pandas是0.25版本,我机器上是0.24.2,测试没有效果。
    发布时间:2024-02-21 19:01:04
  • 【经验分享】今天本地windows系统adb shell突然报错"error: unknown host service",尝试"adb kill-server"、甚至重启PC和手机均不起作用。后来网上查了下,说是PC端adb的后台服务进程的5037端口被其它程序占用了。

    解决方法:使用netstat -ano找到并关闭占有者进程,问题解决。 ​​​
    发布时间:2024-02-21 18:55:05
  • 【经验分享】PPPOE认证返回“User Locked”,可能是因为MAC被拉黑了,换一个就好了。 ​​​
    发布时间:2024-01-16 13:00:17
  • 【经验分享】Linux如何限制一个命令的运行时长?可以使用timeout命令。
    例如,限制ping最多运行10秒,可以这样:
    timeout 10s ping www.baidu.com ​​​
    发布时间:2024-01-12 12:11:50
  • 【经验分享】Playwright库使用context.route()/page.route()过滤HTTP(S)请求时发现有Ajax漏包的情况。查官方文档,发现有云:
    browser_context.route() will not intercept requests intercepted by Service Worker. See this issue. We recommend disabling Service Workers when using request interception by setting browser.new_context.service_workers to 'block'.

    尝试:
    context = browser.new_context(service_workers='block')
    问题解决。

    参考1:https://playwright.dev/python/docs/api/class-browsercontext#browser-context-route
    参考2:https://github.com/microsoft/playwright/issues/15684
    发布时间:2024-01-10 11:56:20
  • 【经验分享】Python fontTools 获取字体文件的字形名称列表,遇到"smile", "question", "space"等AGL名称,如何将其转为Unicode代码?

    >>>import fontTools
    >>>hex(fontTools.agl.AGL2UV['smileface'])
    '0x263a'

    参考:https://fonttools.readthedocs.io/en/latest/_modules/fontTools/agl.html ​​​
    发布时间:2023-10-12 10:58:26
当前位置: 首页 > 公司微博 >
  • 西安鲲之鹏

    发布时间:2019-12-17 11:13:52
    Tmall APP searching result data scraping screenshots. ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-12-12 12:46:58
    【经验分享】Android-x86 4.4和5.1版本安装的时候卡在GRUB安装,问题解决方法:
    The  fix is that you should manually create partitions: create a small (100m) first primary partition for grub, and a 2nd extended partition for the rest, and install android on the 2nd, the grub will go automatically to the 1st...
    >>> http://t.cn/AiDw9VwW  http://t.cn/AiDw9VwC

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-12-06 12:35:57
    【经验分享】昨天发的Android x86模拟器设置静态IP的方法,今天在另外一个环境下测试发现有问题。原来是静态IP被DHCP给覆盖掉了,DHCP执行得比/etc/init.sh要晚。查了半天也没找到禁用默认HDCP的方法,最后试着将/system/bin/dhcpcd和/system/bin/dhcptool两个文件重命名,重启,问题竟然解决了 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-12-05 16:07:33
    【经验分享】Android x86 默认是通过DHCP获取IP的,那如何设置为静态IP参数呢?
    为什么不用DHCP呢?我所在的网络环境中有三个网关,分别连接联通、电信、动态VPN三种出口,我需要让不同的模拟器使用不同的网络(根据业务情况调整)。而DHCP默认分配的网关是固定的。

    以Android x86 6为例,按Alt + F1切换到控制台模式:

    vi /etc/init.sh
    在最后一行return 0之前,加入如下代码:

    # 加下面两句的目的是放弃DHCP获取的IP
    ifconfig eth0 down
    ifconfig eth0 up
    #
    设置eth0口的静态IP为192.168.1.116
    ifconfig eth0 192.168.1.116 netmask 255.255.255.0
    # 设置默认网关为192.168.1.253
    busybox route add default gw 192.168.1.253
    #
    设置DNS为 114.114.114.114 223.5.5.5
    ndc resolver setnetdns 0 localdomain 114.114.114.114 223.5.5.5

    保存(如图1所示),reboot后生效(如图2所示)。

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-12-05 10:18:57
    【经验分享】添加Fiddler/Mitmproxy证书为安卓系统证书,附自动化脚本,点击链接查看>>>  http://t.cn/AieLat6a ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-12-05 08:53:05
    【经验分享】
    "adb devices"出现"unauthorized"的问题经常遇到,大多数情况,adb kill-server之后就能解决,但是今天遇到遇到一设备怎么折腾都不行。

    后来按照这篇文章(http://t.cn/Aie2dMPU)介绍的方法得以解决:

    QUESTION/PROBLEM
    How to fix adb devices shows unauthorized device?

    APPLIES TO
    Android 4, Android 6, Android 7, Android 8

    RESOLUTION
    Possible solutions if "adb devices" shows a device as "unauthorized":
    C:\Users\JohnDoo>adb devices
    List of devices attached
    17310D821D      unauthorized

    1. Disconnect USB between PC and device
    2. Stop adb server by entering "adb kill-server" in command window
    3. On device use "Revoke USB debugging authorizations" in "Developer Options"
    4. On PC delete "adbkey" file in user directory, for example "C:\Users\JohnDoo\.android"
    5. Reconnect the device to the PC
    6. Open a command window and enter "adb devices". Watch the device's screen for any Authorization message and allow the connection.

    The device should now show as "device":

    注意:第四步"删除adbkey文件"是解决本问题的关键!

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-11-19 16:23:49
    【经验分享】使用uiautomatorviewer一直有一个奇怪的问题,查看某些UI正常,但是某些UI却提示异常“Error obtaining UI hierarchy”(如图1所示),控制台信息“null rootnode after parsing.”(如图2所示)。

    之前曾多次遇到这个情况,今天花了些时间查了下,发现stackoverflow上有人遇到类似的问题,详见http://t.cn/AidyMg3t。 原来这是Android4的一个Bug(http://t.cn/AidyMg3c),在Android L中被修复了(http://t.cn/AidyMg3f),Android 5之后的版本应该可以正常工作。

    于是我试了下Android 8下的情况,同一个APP,同一个UI uiautomatorviewer工作正常。

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-11-06 09:32:19

    【视频演示】ANJUKE新房楼盘/二手房小区详细参数,基于APP采集,IP限制弱。

    二手房小区字段:
    u'community_id', u'城市', u'小区名', u'本月均价', u'价格变动', u'所在版块', u'地址', u'总户数', u'建造年代', u'物业公司', u'物业类型', u'物业费', u'开发商', u'总建面积',  u'容积率', u'停车位', u'绿化率', u'经度', u'纬度', u'简介'

    新房楼盘字段:
    u'loupan_id', u'城市', u'楼盘名称', u'别名', u'楼盘价格', u'特色', u'区域位置', u'楼盘地址', u'建筑类型', u'规划户数', u'工程进度', u'开盘时间', u'交房时间', u'容积率', u'绿化率',  u'开发商', u'物业类型', u'物业公司', u'物业管理费', u'车位比', u'车位数', u'楼层状况', u'楼盘户型', u'经度', u'纬度'  西安鲲之鹏的微博视频

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-10-30 12:05:49
    【经验分享】grep命令提示Binary file (standard input) matches(如附图所示)怎么解决?
    可以使用-a参数,e.g. grep -a 'pattern'。
    -a, --text
    Process a binary file as if it were text; this is equivalent to the ‘--binary-files=text’ option.

    >>> http://t.cn/Ai1RqEdR ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-10-21 10:44:18
    【经验分享】链家APP ssl pinning的分析和解决
    (1)直接Fiddler抓包,失败,APP报网络异常,如图1所示;logcat报javax.net.ssl.SSLPeerUnverifiedException异常,如图2所示。
    (2)反编译apk,查到证书验证部分核心代码,如图3和4所示。
    (4)通过Frida HOOK okhttp3.internal.tls.OkHostnameVerifier verify()方法,始终返回true,绕过证书固定验证,代码如下:
    Java.perform(function () {
        var OkHostnameVerifier = Java.use('okhttp3.internal.tls.OkHostnameVerifier');
        try {
             OkHostnameVerifier.verify.overload('java.lang.String', 'javax.net.ssl.SSLSession').implementation = function(p0, p1){
                 console.log('ssl unpinning for "' + p0 + '"');
                 return true;
           };
         } catch (e) {
            console.log(e);
        }
    });
    (5)如图5所示,Fiddler成功抓取到链接APP的HTTP交互数据。

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-10-18 13:23:42
    【经验分享】本文介绍了一例APP使用了非常规ssl pinning导致Fidder抓包失败,最终通过Frida HOOK成功解决,附源码。 >>> http://t.cn/Ai3tEzbP ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-09-26 10:52:18
    【经验分享】今日拨号服务器上某PPPOE拨号持续失败,经查日志:“pppoe: send (sendPacket): Network is down”,ip link 查看对应的虚拟网卡状态是DOWN,无法设置为UP(sudo ip link set dev v051802057684 up失败)。但同一个账号在另外一个机器上测试正常,怀疑可能是MAC地址的问题(例如冲突了),果断删掉虚拟网卡( sudo sudo ip link del v051802057684),然后重建并指定一个不同的MAC,拨号成功!

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-09-26 08:45:09
    【经验分享】昨天下午办公室断了下电,服务器重启后,adb devices显示10台设备都是“?????? no permissions”,第一次遇到这种情况。重启服务器和移动设备问题依据。后来在askubuntu上看到有人提到试一下sudo adb devices,竟然立马识别了(http://t.cn/AinpW0dY)。很诡异,之前用普通权限都一直正常着,为什么突然就没有权限了?

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-09-19 12:20:13
    【经验分享】Termux自带的am命令版本太低,竟然不支持force-stop(如图1示),经查得知pm clear命令也可以停止一个APP,而且还会将APP的用户数据清除掉(回到刚安装的状态),试了一下果然有效,运行之后"/data/data/包名"目录下只剩下lib目录了。注意:需要root权限。 >>> http://t.cn/AiEFayJc ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2019-09-18 09:16:52
    【经验分享】"adb shell 命令",如何让“命令”以root权限执行?
    例如,某设备已root,但当执行adb shell rm /data/data/com.xxxx/cache时提示Permission denied。

    解决方法:
    adb shell "su -c '[your command goes here]'"
    例如:
    adb shell "su -c 'rm /data/data/com.xxxx/cache'"

    参考文章"Is there a way for me to run Adb shell as root without typing in 'su'?" >>> http://t.cn/AiEd4P8m

    阅读全文 + 去微博评论 +