Search in sources :

Example 1 with User

use of com.virjar.vscrawler.core.net.user.User in project vscrawler by virjar.

the class EveryUserPlanner method determineProxy.

@Override
public Proxy determineProxy(HttpHost host, HttpRequest request, HttpContext context, IPPool ipPool, CrawlerSession crawlerSession) {
    HttpClientContext httpClientContext = HttpClientContext.adapt(context);
    User user = UserUtil.getUser(crawlerSession);
    if (user == null) {
        log.warn("you config proxy strategy by user,but this session has not login with a user,proxy bind will be ignore");
        return null;
    }
    Proxy proxy = (Proxy) user.getExtInfo().get(VSCrawlerConstant.VSCRAWLER_AVPROXY_KEY);
    if (proxy == null) {
        String accessUrl = null;
        if (request instanceof HttpRequestWrapper || request instanceof HttpGet) {
            accessUrl = HttpUriRequest.class.cast(request).getURI().toString();
        }
        if (!PoolUtil.isDungProxyEnabled(httpClientContext)) {
            log.info("{}不会被代理", accessUrl);
            return null;
        }
        proxy = ipPool.getIP(host.getHostName(), accessUrl);
        if (proxy == null) {
            return null;
        }
        user.getExtInfo().put(VSCrawlerConstant.VSCRAWLER_AVPROXY_KEY, proxy);
    }
    return proxy;
}
Also used : HttpUriRequest(org.apache.http.client.methods.HttpUriRequest) Proxy(com.virjar.vscrawler.core.net.proxy.Proxy) User(com.virjar.vscrawler.core.net.user.User) HttpGet(org.apache.http.client.methods.HttpGet) HttpRequestWrapper(org.apache.http.client.methods.HttpRequestWrapper) HttpClientContext(org.apache.http.client.protocol.HttpClientContext)

Example 2 with User

use of com.virjar.vscrawler.core.net.user.User in project vscrawler by virjar.

the class EventTest method main.

public static void main(String[] args) {
    VSCrawlerContext vsCrawlerContext = VSCrawlerContext.create("testCrawler");
    vsCrawlerContext.getEventLoop().loop();
    AutoEventRegistry eventRegister = vsCrawlerContext.getAutoEventRegistry();
    eventRegister.registerObserver(new UserLoginEvent() {

        @Override
        public void afterUserLogin(VSCrawlerContext vsCrawlerContext1, User user, boolean loginSucces) {
            System.out.println(Thread.currentThread() + "用户登录:" + (loginSucces ? "成功" : "失败"));
        }
    });
    UserLoginEvent userLoginEvent = eventRegister.findEventDeclaring(UserLoginEvent.class);
    for (int i = 0; i < 10; i++) {
        userLoginEvent.afterUserLogin(vsCrawlerContext, null, false);
    }
    CommonUtil.sleep(20000);
}
Also used : VSCrawlerContext(com.virjar.vscrawler.core.VSCrawlerContext) User(com.virjar.vscrawler.core.net.user.User) UserLoginEvent(com.virjar.vscrawler.core.event.systemevent.UserLoginEvent) AutoEventRegistry(com.virjar.vscrawler.core.event.support.AutoEventRegistry)

Aggregations

User (com.virjar.vscrawler.core.net.user.User)2 VSCrawlerContext (com.virjar.vscrawler.core.VSCrawlerContext)1 AutoEventRegistry (com.virjar.vscrawler.core.event.support.AutoEventRegistry)1 UserLoginEvent (com.virjar.vscrawler.core.event.systemevent.UserLoginEvent)1 Proxy (com.virjar.vscrawler.core.net.proxy.Proxy)1 HttpGet (org.apache.http.client.methods.HttpGet)1 HttpRequestWrapper (org.apache.http.client.methods.HttpRequestWrapper)1 HttpUriRequest (org.apache.http.client.methods.HttpUriRequest)1 HttpClientContext (org.apache.http.client.protocol.HttpClientContext)1