From c9a7dc8debeb8eb17ae6975b711f4149b5579eb4 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Mon, 1 Dec 2014 10:56:03 +0800 Subject: [PATCH 1/5] bump version --- src/main/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 6ac6bfb2..79602009 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionCode="89" + android:versionName="2.5.1"> From 3dba966355161e5f40d61d4a0b86c09b8bb7dfc2 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Mon, 1 Dec 2014 14:04:21 +0800 Subject: [PATCH 2/5] fix two potential FCs --- .../com/github/shadowsocks/AppManager.scala | 16 +++++----- .../com/github/shadowsocks/utils/Utils.scala | 30 +++++++++++-------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/main/scala/com/github/shadowsocks/AppManager.scala b/src/main/scala/com/github/shadowsocks/AppManager.scala index 3df85df0..4e478901 100644 --- a/src/main/scala/com/github/shadowsocks/AppManager.scala +++ b/src/main/scala/com/github/shadowsocks/AppManager.scala @@ -61,6 +61,7 @@ import com.nostra13.universalimageloader.core.{DisplayImageOptions, ImageLoader, import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer import com.github.shadowsocks.utils.{Utils, Scheme, Key} +import scala.concurrent.ops._ import scala.language.implicitConversions case class ProxiedApp(uid: Int, name: String, packageName: String, var proxied: Boolean) @@ -245,18 +246,17 @@ class AppManager extends Activity with OnCheckedChangeListener with OnClickListe } }) bypassSwitch.setChecked(prefs.getBoolean(Key.isBypassApps, false)) + + appListView = findViewById(R.id.applistview).asInstanceOf[ListView] } protected override def onResume() { super.onResume() - new Thread { - override def run() { - handler.post(loadStartRunnable) - appListView = findViewById(R.id.applistview).asInstanceOf[ListView] - if (!appsLoaded) loadApps() - handler.post(loadFinishRunnable) - } - }.start() + spawn { + handler.post(loadStartRunnable) + if (!appsLoaded) loadApps() + handler.post(loadFinishRunnable) + } } def saveAppSettings(context: Context) { diff --git a/src/main/scala/com/github/shadowsocks/utils/Utils.scala b/src/main/scala/com/github/shadowsocks/utils/Utils.scala index a9e78647..6ce7183d 100644 --- a/src/main/scala/com/github/shadowsocks/utils/Utils.scala +++ b/src/main/scala/com/github/shadowsocks/utils/Utils.scala @@ -181,20 +181,24 @@ object Utils { } def resolve(host: String, addrType: Int): Option[String] = { - val lookup = new Lookup(host, addrType) - val resolver = new SimpleResolver("114.114.114.114") - resolver.setTimeout(5) - lookup.setResolver(resolver) - val result = lookup.run() - if (result == null) return None - val records = scala.util.Random.shuffle(result.toList) - for (r <- records) { - addrType match { - case Type.A => - return Some(r.asInstanceOf[ARecord].getAddress.getHostAddress) - case Type.AAAA => - return Some(r.asInstanceOf[AAAARecord].getAddress.getHostAddress) + try { + val lookup = new Lookup(host, addrType) + val resolver = new SimpleResolver("114.114.114.114") + resolver.setTimeout(5) + lookup.setResolver(resolver) + val result = lookup.run() + if (result == null) return None + val records = scala.util.Random.shuffle(result.toList) + for (r <- records) { + addrType match { + case Type.A => + return Some(r.asInstanceOf[ARecord].getAddress.getHostAddress) + case Type.AAAA => + return Some(r.asInstanceOf[AAAARecord].getAddress.getHostAddress) + } } + } catch { + case e: Exception => None } None } From 5547b422834ef7984981e83337db1da71d5ff3d1 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Tue, 2 Dec 2014 14:58:17 +0800 Subject: [PATCH 3/5] fix some DNS issues --- build.sbt | 2 +- .../github/shadowsocks/ShadowsocksNatService.scala | 3 ++- .../com/github/shadowsocks/utils/ConfigUtils.scala | 12 ++++++------ 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/build.sbt b/build.sbt index 9fa23552..538661fa 100644 --- a/build.sbt +++ b/build.sbt @@ -20,7 +20,7 @@ resolvers += "madeye private releases" at "http://madeye-maven-repository.google libraryDependencies ++= Seq( "dnsjava" % "dnsjava" % "2.1.5", - "org.scalaj" %% "scalaj-http" % "0.3.10", + "com.github.kevinsawicki" % "http-request" % "5.6", "commons-net" % "commons-net" % "3.3", "com.google.zxing" % "android-integration" % "2.2" ) diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala index 2c39505f..e19040bb 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala @@ -107,7 +107,7 @@ class ShadowsocksNatService extends Service with BaseService { } def resetDns() = { - setDnsForAllNetwork("8.8.8.8 208.67.222.222 114.114.114.114") + setDnsForAllNetwork("114.114.114.114 8.8.8.8 208.67.222.222") } def destroyConnectionReceiver() { @@ -486,6 +486,7 @@ class ShadowsocksNatService extends Service with BaseService { config = ConfigUtils.getPublicConfig(getBaseContext, holder.getContainer, config) } catch { case ex: Exception => + Log.e(TAG, ex.getMessage) changeState(State.STOPPED, getString(R.string.service_failed)) stopRunner() config = null diff --git a/src/main/scala/com/github/shadowsocks/utils/ConfigUtils.scala b/src/main/scala/com/github/shadowsocks/utils/ConfigUtils.scala index 430d983b..d45b0fd8 100644 --- a/src/main/scala/com/github/shadowsocks/utils/ConfigUtils.scala +++ b/src/main/scala/com/github/shadowsocks/utils/ConfigUtils.scala @@ -42,7 +42,7 @@ package com.github.shadowsocks.utils import android.content.{SharedPreferences, Context} import com.github.shadowsocks.ShadowsocksApplication import com.google.android.gms.tagmanager.Container -import scalaj.http.{HttpOptions, Http} +import com.github.kevinsawicki.http.HttpRequest import com.github.shadowsocks.aidl.Config object ConfigUtils { @@ -183,12 +183,12 @@ object ConfigUtils { def getPublicConfig(context: Context, container: Container, config: Config): Config = { val url = container.getString("proxy_url") val sig = Utils.getSignature(context) - val list = Http + val list = HttpRequest .post(url) - .params("sig" -> sig) - .option(HttpOptions.connTimeout(1000)) - .option(HttpOptions.readTimeout(5000)) - .asString + .connectTimeout(2000) + .readTimeout(2000) + .send("sig="+sig) + .body val proxies = util.Random.shuffle(list.split('|').toSeq).toSeq val proxy = proxies(0).split(':') From 01306d527d4ab4614b1e1bdeec7418750daa0c56 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Tue, 2 Dec 2014 15:36:27 +0800 Subject: [PATCH 4/5] Refine DNS settings --- .../shadowsocks/ShadowsocksNatService.scala | 49 +++++++++++++------ 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala index e19040bb..7b222856 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala @@ -73,7 +73,7 @@ class ShadowsocksNatService extends Service with BaseService { private val mSetForegroundSignature = Array[Class[_]](classOf[Boolean]) var closeReceiver: BroadcastReceiver = null - var conReceiver: BroadcastReceiver = null + var connReceiver: BroadcastReceiver = null var notificationManager: NotificationManager = null var config: Config = null var apps: Array[ProxiedApp] = null @@ -110,23 +110,41 @@ class ShadowsocksNatService extends Service with BaseService { setDnsForAllNetwork("114.114.114.114 8.8.8.8 208.67.222.222") } + def flushDns() { + if (Utils.isLollipopOrAbove) { + val manager = getSystemService(Context.CONNECTIVITY_SERVICE).asInstanceOf[ConnectivityManager] + val networks = manager.getAllNetworks + val cmdBuf = new ArrayBuffer[String]() + networks.foreach(network => { + val networkInfo = manager.getNetworkInfo(network) + if (networkInfo.isAvailable) { + val netId = network.getClass.getDeclaredField("netId").get(network).asInstanceOf[Int] + cmdBuf.append("ndc resolver flushnet %d".format(netId)) + } + }) + Console.runRootCommand(cmdBuf.toArray) + } else { + Console.runRootCommand(Array("ndc resolver flushdefaultif", "ndc resolver flushif wlan0")) + } + } + + def destroyConnectionReceiver() { - if (conReceiver != null) { - unregisterReceiver(conReceiver) - conReceiver = null + if (connReceiver != null) { + unregisterReceiver(connReceiver) + connReceiver = null } resetDns() } def initConnectionReceiver() { - setupDns() val filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION) - conReceiver = new BroadcastReceiver { + connReceiver = new BroadcastReceiver { override def onReceive(context: Context, intent: Intent) = { setupDns() } } - registerReceiver(conReceiver, filter) + registerReceiver(connReceiver, filter) } def startShadowsocksDaemon() { @@ -266,7 +284,6 @@ class ShadowsocksNatService extends Service with BaseService { startRedsocksDaemon() startShadowsocksDaemon() setupIptables() - flushDNS() true } @@ -364,10 +381,6 @@ class ShadowsocksNatService extends Service with BaseService { Console.runRootCommand(Utils.getIptables + " -t nat -F OUTPUT") } - def flushDNS() { - Console.runRootCommand(Array("ndc resolver flushdefaultif", "ndc resolver flushif wlan0")) - } - def setupIptables() = { val init_sb = new ArrayBuffer[String] val http_sb = new ArrayBuffer[String] @@ -454,6 +467,9 @@ class ShadowsocksNatService extends Service with BaseService { config = c + // register connection receiver + if (Utils.isLollipopOrAbove) initConnectionReceiver() + // register close receiver val filter = new IntentFilter() filter.addAction(Intent.ACTION_SHUTDOWN) @@ -466,9 +482,6 @@ class ShadowsocksNatService extends Service with BaseService { } registerReceiver(closeReceiver, filter) - // register connection receiver - if (Utils.isLollipopOrAbove) initConnectionReceiver() - // send event application.tracker.send(new HitBuilders.EventBuilder() .setCategory(TAG) @@ -486,7 +499,6 @@ class ShadowsocksNatService extends Service with BaseService { config = ConfigUtils.getPublicConfig(getBaseContext, holder.getContainer, config) } catch { case ex: Exception => - Log.e(TAG, ex.getMessage) changeState(State.STOPPED, getString(R.string.service_failed)) stopRunner() config = null @@ -495,8 +507,13 @@ class ShadowsocksNatService extends Service with BaseService { if (config != null) { + // Clean up killProcesses() + // Set DNS + if (Utils.isLollipopOrAbove) setupDns() + flushDns() + var resolved: Boolean = false if (!InetAddressUtils.isIPv4Address(config.proxy) && !InetAddressUtils.isIPv6Address(config.proxy)) { From 24233f104ac6b0648832f933efa83d673db5fcdb Mon Sep 17 00:00:00 2001 From: Max Lv Date: Thu, 4 Dec 2014 19:21:22 +0800 Subject: [PATCH 5/5] Fix #167 --- src/main/res/values/configs.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/res/values/configs.xml b/src/main/res/values/configs.xml index c2fc1cf7..8a4d5e4a 100644 --- a/src/main/res/values/configs.xml +++ b/src/main/res/values/configs.xml @@ -1,5 +1,5 @@ - ".cn",".07073.com",".10010.com",".100ye.com",".114la.com",".115.com",".120ask.com",".126.com",".126.net",".1616.net",".163.com",".17173.com",".1778.com",".178.com",".17u.com",".19lou.com",".1o26.com",".1ting.com",".21cn.com",".2345.com",".265.com",".265g.com",".28.com",".28tui.com",".2hua.com",".2mdn.net",".315che.com",".3366.com",".360buy.com",".360buyimg.com",".360doc.com",".36kr.com",".39.net",".3dmgame.com",".4399.com",".4738.com",".500wan.com",".51.com",".51.la",".5173.com",".51auto.com",".51buy.com",".51cto.com",".51fanli.com",".51job.com",".52kmh.com",".52pk.net",".52tlbb.com",".53kf.com",".55bbs.com",".55tuan.com",".56.com",".58.com",".591hx.com",".5d6d.net",".61.com",".70e.com",".777wyx.com",".778669.com",".7c.com",".7k7k.com",".88db.com",".91.com",".99bill.com",".akamaitechnologies.com",".akamaitech.net",".akamai.net",".a135.net",".abang.com",".abchina.com",".ad1111.com",".admin5.com",".adnxs.com",".adobe.com",".adroll.com",".ads8.com",".adsame.com",".adsonar.com",".adtechus.com",".aibang.com",".aifang.com",".aili.com",".aipai.com",".aizhan.com",".ali213.net",".alibaba.com",".alicdn.com",".aliexpress.com",".alimama.com",".alipay.com",".alipayobjects.com",".alisoft.com",".alivv.com",".aliyun.com",".allyes.com",".amazon.com",".anjuke.com",".anzhi.com",".aol.com",".apple.com",".arpg2.com",".atdmt.com",".b2b168.com",".babytree.com",".baidu.com",".baihe.com",".baixing.com",".bankcomm.com",".baomihua.com",".bdimg.com",".bdstatic.com",".bendibao.com",".betrad.com",".bilibili.tv",".bing.com",".bitauto.com",.blogchina.com",".blueidea.com",".bluekai.com",".booksky.org",".cachefly.net",".caixin.com",".ccb.com",".ccidnet.com",".cctv.com",".china.com",".chinabyte.com",".chinahr.com",".chinanews.com",".chinaunix.net",".chinaw3.com",".chinaz.com",".chuangelm.com",".ci123.com",".cmbchina.com",".cnbeta.com",".cnblogs.com",".cncn.com",".cnhubei.com",".cnki.net",".cnmo.com",".cnxad.com",".cnzz.com",".cocoren.com",".compete.com",".comsenz.com",".coo8.com",".cqnews.net",".crsky.com",".csdn.net",".ct10000.com",".ctrip.com",".dangdang.com",".daqi.com",".dayoo.com",".dbank.com",".ddmap.com",".dedecms.com",".dh818.com",".diandian.com",".dianping.com",".discuz.net",".doc88.com",".docin.com",".donews.com",".dospy.com",".douban.com",".douban.fm",".doubleclick.com",".doubleclick.net",".duba.net",".duote.com",".duowan.com",".dzwww.com",".eastday.com",".eastmoney.com",".ebay.com",".elong.com",".ename.net",".etao.com",".exam8.com",".eye.rs",".fantong.com",".fastcdn.com",".fblife.com",".fengniao.com",".fenzhi.com",".flickr.com",".fobshanghai.com",".ftuan.com",".funshion.com",".fx120.net",".game3737.com",".gamersky.com",".gamestlbb.com",".gamesville.com",".ganji.com",".gfan.com",".gongchang.com",".google-analytics.com",".gougou.com",".gtimg.com",".hao123.com",".haodf.com",".harrenmedianetwork.com",".hc360.com",".hefei.cc",".hf365.com",".hiapk.com",".hichina.com",".homeinns.com",".hotsales.net",".house365.com",".huaban.com",".huanqiu.com",".hudong.com",".hupu.com",".iask.com",".iciba.com",".icson.com",".ifeng.com",".iloveyouxi.com",".im286.com",".imanhua.com",".cctvpic.com",".imrworldwide.com",".invitemedia.com",".ip138.com",".ipinyou.com",".iqilu.com",".iqiyi.com",".irs01.com",".irs01.net",".it168.com",".iteye.com",".iyaya.com",".jb51.net",".jiathis.com",".jiayuan.com",".jing.fm",".jinti.com",".jqw.com",".jumei.com",".jxedt.com",".jysq.net",".kaixin001.com",".kandian.com",".kdnet.net",".kimiss.com",".ku6.com",".ku6cdn.com",".ku6img.com",".kuaidi100.com",".kugou.com",".l99.com",".lady8844.com",".lafaso.com",".lashou.com",".legolas-media.com",".lehecai.com",".leho.com",".letv.com",".liebiao.com",".lietou.com",".linezing.com",".linkedin.com",".live.com",".longhoo.net",".lusongsong.com",".lxdns.com",".lycos.com",".lygo.com",".m18.com",".m1905.com",".made-in-china.com",".makepolo.com",".mangocity.com",".manzuo.com",".mapbar.com",".mathtag.com",".mediaplex.com",".mediav.com",".meilele.com",".meilishuo.com",".meishichina.com",".meituan.com",".meizu.com",".miaozhen.com",".microsoft.com",".miercn.com",".mlt01.com",".mmstat.com",".mnwan.com",".mogujie.com",".mookie1.com",".moonbasa.com",".mop.com",".mosso.com",".mplife.com",".msn.com",".mtime.com",".mumayi.com",".mydrivers.com",".net114.com",".netease.com",".newsmth.net",".nipic.com",".nowec.com",".nuomi.com",".oadz.com",".oeeee.com",".onetad.com",".onlinedown.net",".onlylady.com",".oschina.net",".otwan.com",".paipai.com",".paypal.com",".pchome.net",".pcpop.com",".pengyou.com",".php100.com",".phpwind.net",".pingan.com",".pixlr.com",".pp.cc",".ppstream.com",".pptv.com",".pubmatic.com",".q150.com",".qianlong.com",".qidian.com",".qingdaonews.com",".qire123.com",".qiushibaike.com",".qiyou.com",".qjy168.com",".qq.com",".qq937.com",".qstatic.com",".quantserve.com",".qunar.com",".readnovel.com",".renren.com",".rtbidder.net",".scanscout.com",".scorecardresearch.com",".sdo.com",".seowhy.com",".serving-sys.com",".sf-express.com",".shangdu.com",".sina.com",".sinahk.net",".sinajs.com",".smzdm.com",".snyu.com",".sodu.org",".sogou.com",".sohu.com",".soku.com",".sootoo.com",".soso.com",".soufun.com",".sourceforge.net",".staticsdo.com",".stockstar.com",".sttlbb.com",".suning.com",".szhome.com",".sznews.com",".tangdou.com",".tanx.com",".tao123.com",".taobao.com",".taobaocdn.com",".tdimg.com",".tenpay.com",".tgbus.com",".theplanet.com",".thethirdmedia.com",".tiancity.com",".tianji.com",".tiao8.info",".tiexue.net",".titan24.com",".tmall.com",".tom.com",".toocle.com",".tremormedia.com",".tuan800.com",".tudou.com",".tudouui.com",".tui18.com",".tuniu.com",".twcczhu.com",".u17.com",".ucjoy.com",".ulink.cc",".uniontoufang.com",".up2c.com",".uuu9.com",".uuzu.com",".vancl.com",".verycd.com",".vipshop.com",".vizu.com",".vjia.com",".weibo.com",".weiphone.com",".west263.com",".whlongda.com",".wrating.com",".wumii.com",".xiami.com",".xiaomi.com",".xiazaiba.com",".xici.net",".xinhuanet.com",".xinnet.com",".xitek.com",".xiu.com",".xunlei.com",".xyxy.net",".yaolan.com",".yesky.com",".yieldmanager.com",".yihaodian.com",".yingjiesheng.com",".yinyuetai.com",".yiqifa.com",".ykimg.com",".ynet.com",".yoka.com",".yolk7.com",".youboy.com",".youdao.com",".yougou.com",".youku.com",".youshang.com",".yupoo.com",".yxlady.com",".yyets.com",".zhaodao123.com",".zhaopin.com",".zhenai.com",".zhibo8.cc",".zhihu.com",".zhubajie.com",".zongheng.com",".zoosnet.net",".zqgame.com",".ztgame.com",".zx915.com",".miui.com",".mi-idc.com",".qhimg.com",".wandoujia.com" + ".cn",".07073.com",".10010.com",".100ye.com",".114la.com",".115.com",".120ask.com",".126.com",".126.net",".1616.net",".163.com",".17173.com",".1778.com",".178.com",".17u.com",".19lou.com",".1o26.com",".1ting.com",".21cn.com",".2345.com",".265.com",".265g.com",".28.com",".28tui.com",".2hua.com",".2mdn.net",".315che.com",".3366.com",".360buy.com",".360buyimg.com",".360doc.com",".36kr.com",".39.net",".3dmgame.com",".4399.com",".4738.com",".500wan.com",".51.com",".51.la",".5173.com",".51auto.com",".51buy.com",".51cto.com",".51fanli.com",".51job.com",".52kmh.com",".52pk.net",".52tlbb.com",".53kf.com",".55bbs.com",".55tuan.com",".56.com",".58.com",".591hx.com",".5d6d.net",".61.com",".70e.com",".777wyx.com",".778669.com",".7c.com",".7k7k.com",".88db.com",".91.com",".99bill.com",".akamaitechnologies.com",".akamaitech.net",".akamai.net",".a135.net",".abang.com",".abchina.com",".ad1111.com",".admin5.com",".adnxs.com",".adobe.com",".adroll.com",".ads8.com",".adsame.com",".adsonar.com",".adtechus.com",".aibang.com",".aifang.com",".aili.com",".aipai.com",".aizhan.com",".ali213.net",".alibaba.com",".alicdn.com",".aliexpress.com",".alimama.com",".alipay.com",".alipayobjects.com",".alisoft.com",".alivv.com",".aliyun.com",".allyes.com",".amazon.com",".anjuke.com",".anzhi.com",".aol.com",".apple.com",".arpg2.com",".atdmt.com",".b2b168.com",".babytree.com",".baidu.com",".baidupcs.com",".baihe.com",".baixing.com",".bankcomm.com",".baomihua.com",".bdimg.com",".bdstatic.com",".bendibao.com",".betrad.com",".bilibili.tv",".bing.com",".bitauto.com",.blogchina.com",".blueidea.com",".bluekai.com",".booksky.org",".cachefly.net",".caixin.com",".ccb.com",".ccidnet.com",".cctv.com",".china.com",".chinabyte.com",".chinahr.com",".chinanews.com",".chinaunix.net",".chinaw3.com",".chinaz.com",".chuangelm.com",".ci123.com",".cmbchina.com",".cnbeta.com",".cnblogs.com",".cncn.com",".cnhubei.com",".cnki.net",".cnmo.com",".cnxad.com",".cnzz.com",".cocoren.com",".compete.com",".comsenz.com",".coo8.com",".cqnews.net",".crsky.com",".csdn.net",".ct10000.com",".ctrip.com",".dangdang.com",".daqi.com",".dayoo.com",".dbank.com",".ddmap.com",".dedecms.com",".dh818.com",".diandian.com",".dianping.com",".discuz.net",".doc88.com",".docin.com",".donews.com",".dospy.com",".douban.com",".douban.fm",".doubleclick.com",".doubleclick.net",".duba.net",".duote.com",".duowan.com",".dzwww.com",".eastday.com",".eastmoney.com",".ebay.com",".elong.com",".ename.net",".etao.com",".exam8.com",".eye.rs",".fantong.com",".fastcdn.com",".fblife.com",".fengniao.com",".fenzhi.com",".flickr.com",".fobshanghai.com",".ftuan.com",".funshion.com",".fx120.net",".game3737.com",".gamersky.com",".gamestlbb.com",".gamesville.com",".ganji.com",".gfan.com",".gongchang.com",".google-analytics.com",".gougou.com",".gtimg.com",".hao123.com",".haodf.com",".harrenmedianetwork.com",".hc360.com",".hefei.cc",".hf365.com",".hiapk.com",".hichina.com",".homeinns.com",".hotsales.net",".house365.com",".huaban.com",".huanqiu.com",".hudong.com",".hupu.com",".iask.com",".iciba.com",".icson.com",".ifeng.com",".iloveyouxi.com",".im286.com",".imanhua.com",".cctvpic.com",".imrworldwide.com",".invitemedia.com",".ip138.com",".ipinyou.com",".iqilu.com",".iqiyi.com",".irs01.com",".irs01.net",".it168.com",".iteye.com",".iyaya.com",".jb51.net",".jiathis.com",".jiayuan.com",".jing.fm",".jinti.com",".jqw.com",".jumei.com",".jxedt.com",".jysq.net",".kaixin001.com",".kandian.com",".kdnet.net",".kimiss.com",".ku6.com",".ku6cdn.com",".ku6img.com",".kuaidi100.com",".kugou.com",".l99.com",".lady8844.com",".lafaso.com",".lashou.com",".legolas-media.com",".lehecai.com",".leho.com",".letv.com",".liebiao.com",".lietou.com",".linezing.com",".linkedin.com",".live.com",".longhoo.net",".lusongsong.com",".lxdns.com",".lycos.com",".lygo.com",".m18.com",".m1905.com",".made-in-china.com",".makepolo.com",".mangocity.com",".manzuo.com",".mapbar.com",".mathtag.com",".mediaplex.com",".mediav.com",".meilele.com",".meilishuo.com",".meishichina.com",".meituan.com",".meizu.com",".miaozhen.com",".microsoft.com",".miercn.com",".mlt01.com",".mmstat.com",".mnwan.com",".mogujie.com",".mookie1.com",".moonbasa.com",".mop.com",".mosso.com",".mplife.com",".msn.com",".mtime.com",".mumayi.com",".mydrivers.com",".net114.com",".netease.com",".newsmth.net",".nipic.com",".nowec.com",".nuomi.com",".oadz.com",".oeeee.com",".onetad.com",".onlinedown.net",".onlylady.com",".oschina.net",".otwan.com",".paipai.com",".paypal.com",".pchome.net",".pcpop.com",".pengyou.com",".php100.com",".phpwind.net",".pingan.com",".pixlr.com",".pp.cc",".ppstream.com",".pptv.com",".pubmatic.com",".q150.com",".qianlong.com",".qidian.com",".qingdaonews.com",".qire123.com",".qiushibaike.com",".qiyou.com",".qjy168.com",".qq.com",".qq937.com",".qstatic.com",".quantserve.com",".qunar.com",".readnovel.com",".renren.com",".rtbidder.net",".scanscout.com",".scorecardresearch.com",".sdo.com",".seowhy.com",".serving-sys.com",".sf-express.com",".shangdu.com",".sina.com",".sinahk.net",".sinajs.com",".smzdm.com",".snyu.com",".sodu.org",".sogou.com",".sohu.com",".soku.com",".sootoo.com",".soso.com",".soufun.com",".sourceforge.net",".staticsdo.com",".stockstar.com",".sttlbb.com",".suning.com",".szhome.com",".sznews.com",".tangdou.com",".tanx.com",".tao123.com",".taobao.com",".taobaocdn.com",".tbcache.com",".tdimg.com",".tenpay.com",".tgbus.com",".theplanet.com",".thethirdmedia.com",".tiancity.com",".tianji.com",".tiao8.info",".tiexue.net",".titan24.com",".tmall.com",".tom.com",".toocle.com",".tremormedia.com",".tuan800.com",".tudou.com",".tudouui.com",".tui18.com",".tuniu.com",".twcczhu.com",".u17.com",".ucjoy.com",".ulink.cc",".uniontoufang.com",".up2c.com",".uuu9.com",".uuzu.com",".vancl.com",".verycd.com",".vipshop.com",".vizu.com",".vjia.com",".weibo.com",".weiphone.com",".west263.com",".whlongda.com",".wrating.com",".wumii.com",".xiami.com",".xiaomi.com",".xiazaiba.com",".xici.net",".xinhuanet.com",".xinnet.com",".xitek.com",".xiu.com",".xunlei.com",".xyxy.net",".yaolan.com",".yesky.com",".yieldmanager.com",".yihaodian.com",".yingjiesheng.com",".yinyuetai.com",".yiqifa.com",".ykimg.com",".ynet.com",".yoka.com",".yolk7.com",".youboy.com",".youdao.com",".yougou.com",".youku.com",".youshang.com",".yupoo.com",".yxlady.com",".yyets.com",".zhaodao123.com",".zhaopin.com",".zhenai.com",".zhibo8.cc",".zhihu.com",".zhubajie.com",".zongheng.com",".zoosnet.net",".zqgame.com",".ztgame.com",".zx915.com",".miui.com",".mi-idc.com",".qhimg.com",".wandoujia.com"