更多>>关于我们
西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效获取互联网任何公开可见信息。
您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。
数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。
更多>>技术文章
-
西安鲲之鹏
发布时间:2024-01-10 11:56:20
【经验分享】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 -
西安鲲之鹏
发布时间:2023-10-12 10:58:26
【经验分享】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-08-31 15:58:38
【经验分享】Hyper-V在虚拟机系统内部设置vlan id不起作用问题的解决。
遇到问题:
Hyper-V虚拟机安装的Ubuntu系统,使用ip link添加了带vlan id的虚拟网卡,命令如下:
sudo ip link add link eth1 address d8:50:e6:74:5e:d4 vlan196 type vlan id 196
sudo ip link set vlan196 up
虚拟网卡vlan196 添加成功(如图1所示),但通过该接口向外发送数据包却一直失败。
例如发送寻找PPPOE BAS服务器的包(sudo pppoe-discovey -I vlan196),一直超时(如图2所示)。
在虚拟机里通过tcpdump抓包(tcpdump -nnei eth1 -vvv),可以抓到到带有正确vlan id的数据包,如图3所示。
很奇怪,同样的配置方法,在ESXi虚拟系统中能够正常工作,看来还是Hyper-V的问题。
在Hyper-V虚拟机网卡属性里直接设置vlan id,能正常工作。但是这里只能设置一个vlan id,不满足我的需求,我需要在虚拟机里同时使用多个vlan id的网络。
解决问题:
网上查了好久,没有人提到类似的问题。就在快要放弃的时候看到了Set-VMNetworkAdapterVlan命令(Hyper-V的PowerShell命令 ),发现通过这个命令可以设置更多的vlan相关参数(相比较GUI界面而言)。
经过一系列尝试,终于解决了问题。通过“-AllowedVlanIdList”参数可以指定一个vlan id范围(白名单),在这个范围内的vlan id将被虚拟机转发,否则将被丢弃,上面超时就是因为数据包被无情的抛弃了。
完整脚本如下:
# 设置虚拟机"KUNZHIPENG-11"的第二块网卡,允许vlan id为196-200的数据包通过。
# 获取虚拟机的所有网卡,保存在$vmadapter中
$vmadapter = Get-VMNetworkAdapter -VMName "KUNZHIPENG-11"
# 只想设置第二块,所以指定$vmadapter[1]
Set-VMNetworkAdapterVlan -VMNetworkAdapter $vmadapter[1] -Trunk -AllowedVlanIdList 196-200 -NativeVlanId 1
# 看看设置生效没
Get-VMNetworkAdapterVlan -VMNetworkAdapter $vmadapter[1]
参考资料:
Set-VMNetworkAdapterVlan的文档:
https://learn.microsoft.com/en-us/powershell/module/hyper-v/set-vmnetworkadaptervlan?view=windowsserver2022-ps
Linux使用ip link添加带vlan id虚拟网卡的文档:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-configure_802_1q_vlan_tagging_using_the_command_line
参考:https://stackoverflow.com/questions/60782014/hyper-v-changing-static-mac-address-on-one-of-the-adapters
-
西安鲲之鹏
发布时间:2023-08-30 12:33:08
【经验分享】Python urllib2 + Fiddler调试的时候,出现 [SSL: CERTIFICATE_VERIFY_FAILED] 异常,绕过方法:
import ssl
try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else:
# Handle target environment that doesn't support HTTPS verification
ssl._create_default_https_context = _create_unverified_https_context -
西安鲲之鹏
发布时间:2023-03-24 17:13:31
【经验分享】调用ChatGPT API时,如何使用代理?
背景:国内无法直接调用ChatGPT API,直接调用会出现无法连接错误,如附图1所示。
解决方案:可以通过给requests库设置国外的代理IP来绕过限制。详见文章 >>> http://www.site-digger.com/html/articles/20230324/894.html。效果如附图2所示。
-
西安鲲之鹏
发布时间:2022-11-30 21:50:43
【经验分享】谨慎升级glibc!!!:由于某软件提示"version `GLIBC_2.28' not found",所以尝试给Ubuntu16.04升级glibc到2.28版本,结果导致系统崩溃了,重启也无法进入系统,如附图1所示。stackoverflow上曾有网友提醒要谨慎升级glibc,有可能导致系统崩溃,真是一语成谶,果然被我遇上了(墨菲定律?)。
网上查了一下,也有遇到过类似情况的,解决方法是将/lib64/ld-linux-x86-64.so.2恢复成原始版本。
解决流程如下:
(1)在正常的Ubuntu16.04系统下看了下,/lib64/ld-linux-x86-64.so.2是符号链接文件,默认指向了/lib/x86_64-linux-gnu/ld-2.23.so,记下这个文件路径。
(2)从U盘启动进入Ubuntu系统(Shell),在Shell里挂载上出问题的系统盘,然后删除掉/lib64/内所有文件,并建立/lib64/ld-linux-x86-64.so.2 - > /lib/x86_64-linux-gnu/ld-2.23.so的符号链接文件。
(3)重启问题解决。
由于我的机器的Macmini,U盘启动这里折腾了很久,Mark一下:
Macmini选择启动盘的方法: 按住Alt键不放开机(详见http://idarc.cn/index.php/archives/3426/)。
普通键盘与Apple键盘对应关系:
Windows键盘 -> Apple键盘
Ctrl -> Control
Win -> Command ⌘
Alt -> Option
-
西安鲲之鹏
发布时间:2022-11-23 08:12:16
【分享】抓包分析发现一个微信公众号文章长链接(mp.weixin.qq.com/s?__biz=*&mid=*)转短链接的接口(mp.weixin.qq.com/*)。
微信公众号文章长链接示例:mp.weixin.qq.com/s?__biz=MzAwNDIzMDQyNw==&mid=2673075156&idx=1&sn=9c6943fa83d054b16d75b64e920e31f3&chksm=81885fa0b6ffd6b61c80842f7c72474fb40664e378c6610ff818d7d89d8925ddb0e08cbe51d9&scene=132#wechat_redirect#
对应的短链接为:mp.weixin.qq.com/s/ehY4lqe8Jg-jDkiTD6Mp1g
对应的接口如下(已精简掉所有无用的参数):
GET /mp/appmsg_weapp?action=batch_get_weapp&__biz=MjM5Njc5MTgyMg== HTTP/1.1
Host: mp.weixin.qq.com
User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; MI NOTE 3 Build/V417IR; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/3262 MMWEBSDK/20220204 Mobile Safari/537.36 MMWEBID/9045 MicroMessenger/8.0.20.2100(0x28001438) Process/toolsmp WeChat/arm32 Weixin NetType/WIFI Language/zh_CN ABI/arm32
X-Requested-With: XMLHttpRequest
Referer: mp.weixin.qq.com/s?__biz=MzAwNDIzMDQyNw==&mid=2673075156&idx=1&sn=9c6943fa83d054b16d75b64e920e31f3&chksm=81885fa0b6ffd6b61c80842f7c72474fb40664e378c6610ff818d7d89d8925ddb0e08cbe51d9&scene=132#wechat_redirect
Referer头为长连接URL,其它参数均可保持默认。接口返回结果如附图1所示。
-
西安鲲之鹏
发布时间:2022-11-09 20:33:36
【经验分享】使用Frida脚本强制给okhttp3.OkHttpClient设置代理。
背景:某些应用使用Proxy.NO_PROXY跳过系统代理设置(例如附图),导致代理模式无法抓到HTTPS流量。
脚本如下:
Java.perform(function(){
// OkHttpClient强制设置代理
var OkHttpClient = Java.use("okhttp3.OkHttpClient");
var OkHttpBuilder = Java.use("okhttp3.OkHttpClient$Builder");
var Proxy = Java.use("java.net.Proxy");
var ProxyType = Java.use("java.net.Proxy$Type");
var InetSocketAddress = Java.use("java.net.InetSocketAddress");
// 要设置的代理
var proxy = Proxy.$new(ProxyType.SOCKS.value, InetSocketAddress.createUnresolved("IP", int_port));
OkHttpClient.newBuilder.overload().implementation = function() {
return OkHttpBuilder.$new();
}
OkHttpBuilder.build.overload().implementation = function() {
console.log('[+] Installing proxy');
this.proxy(proxy);
return this.build();
}
OkHttpBuilder.proxy.overload("java.net.Proxy").implementation = function(input_proxy) {
console.log('[+] Changing proxy');
return this.proxy(proxy);
}
});
function lookup_okhttpclient(){
// 查看内存中的okhttp3.OkHttpClient实例的代理
Java.perform(function(){
Java.choose('okhttp3.OkHttpClient',
{
onMatch: function (instance){
console.log('Found instance: ' + instance + ', Current proxy: ' + instance.proxy());
},
onComplete: function ()
{
}
});
});
}
另外,通过调用lookup_okhttpclient()可以动态查看内存中okhttp3.OkHttpClient实例的代理设置情况。