⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcookiemonsterslayer.java

📁 httptunnel.jar httptunnel java 源码
💻 JAVA
字号:
package net.jumperz.app.MGuardian.plugin;

import net.jumperz.net.*;
import net.jumperz.util.*;
import java.net.*;
import java.util.*;
import java.io.*;

public class MCookieMonsterSlayer
extends MGuardianPlugin
{
private Map cookiePoolMap = new HashMap();
//--------------------------------------------------------------------------------
public Map execute( Map sessionInfo )
throws IOException
{
String arg = ( String )sessionInfo.get( "arg" );
if( arg.equals( "request" ) )
	{
	return processRequest( sessionInfo );
	}
else if( arg.equals( "response" ) )
	{
	return processResponse( sessionInfo );
	}
else
	{
	return null;
	}
}
// --------------------------------------------------------------------------------
private Map processRequest( Map sessionInfo )
throws IOException
{
MHttpRequest request = ( MHttpRequest )sessionInfo.get( "request" );
Socket clientSideSocket	= ( Socket )sessionInfo.get( "clientSideSocket" );
String clientIp = clientSideSocket.getInetAddress().getHostAddress();
String cookieHeader = request.getHeaderValue( "Cookie" );
if( cookieHeader == null )
	{
	return null;
	}
String cookie = MRegEx.getMatch( "([^=]+=\\w+)", cookieHeader );
Set ipPool = getIpPool( cookie );
if( ipPool.contains( clientIp ) )
	{
		// valid access
	return null;
	}
synchronized( ipPool )
	{
	ipPool.add( clientIp );
	}
String host = request.getHeaderValue( "Host" );
String secondLevelDomain = "";
if( host == null )
	{
	secondLevelDomain = ".co.jp";
	}
else
	{
	secondLevelDomain = MRegEx.getMatch( "\\..{2}\\..{2}$", host );
	if( secondLevelDomain.equals( "" ) )
		{	
		secondLevelDomain = ".co.jp";
		}
	}
String cookiePrefix = MRegEx.getMatch( "^[^=]*", cookie );
MHttpResponse response = new MHttpResponse( "HTTP/1.1 307 Temporary Redirect\r\n\r\n307 Temporary Redirect" );
MRequestUri uri = new MRequestUri( request.getUri() );
String query = uri.getQuery();
if( query.equals( "" ) )
	{
	query = "time=" + System.currentTimeMillis();
	}
else
	{
	query = query + "&time=" + System.currentTimeMillis();
	}
uri.setQuery( query );
response.setHeaderValue( "Location", uri.toString() );
Map pluginResult = new HashMap();
pluginResult.put( "response", response );
response.setHeaderValue( "Set-Cookie", cookiePrefix + "=dummy; expires=Thu, 01-Jan-70 00:00:01 GMT; path=/; domain=" + secondLevelDomain );

return pluginResult;
}
// --------------------------------------------------------------------------------
private Map processResponse( Map sessionInfo )
{
MHttpResponse response = ( MHttpResponse )sessionInfo.get( "response" );
Socket clientSideSocket	= ( Socket )sessionInfo.get( "clientSideSocket" );
String clientIp = clientSideSocket.getInetAddress().getHostAddress();
String cookieHeader = response.getHeaderValue( "Set-Cookie" );
if( cookieHeader == null )
	{
	return null;
	}
String cookie = MRegEx.getMatch( "([^=]+=\\w+)", cookieHeader );
Set ipPool = getIpPool( cookie );
synchronized( ipPool )
	{
	ipPool.add( clientIp );
	}
return null;
}
// --------------------------------------------------------------------------------
private Set getIpPool( String cookie )
{
Set s = null;
synchronized( cookiePoolMap )
	{
	if( cookiePoolMap.containsKey( cookie ) )
		{
		s = ( Set )cookiePoolMap.get( cookie );
		}
	else
		{
		s = new HashSet();
		cookiePoolMap.put( cookie, s );
		}
	}
return s;
}
//--------------------------------------------------------------------------------
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -