更多>>关于我们
西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效获取互联网任何公开可见信息。
您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。
数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。
更多>>技术文章
发布时间:2022-11-09 来源:西安鲲之鹏官微
【经验分享】使用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实例的代理设置情况。
背景:某些应用使用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实例的代理设置情况。
特别说明:该文章为鲲鹏数据原创内容 ,您除了可以发表评论外,还可以转载到别的网站,但是请保留源地址,谢谢!!(尊重他人劳动,我们共同努力)
☹ Disqus被Qiang了,之前的评论内容都没了。如果您有爬虫相关技术方面的问题,欢迎发到我们的问答平台:http://spider.site-digger.com/