Looking for proxies easily

Find available proxies in one click

Hide your IP from everyone

Use Proxy Searcher for free

Free proxy search engine

Introduction

Proxy Searcher uses its own public search engine which based on .NET 4.5 technology. In order to use it you need to perform following steps:
Proxy search engine doesn't support backward compatibility, therefore when you upgrade engine you may notice that your solution is not compilable anymore. In that case please check examples on this page again.

Examples

Following example demonstrates how to search http proxies based on parallel search engine and show them on console application.
using System;
using System.Net.Http;
using System.Net.Http.Handlers;
using ProxySearch.Engine;
using ProxySearch.Engine.Checkers;
using ProxySearch.Engine.DownloaderContainers;
using ProxySearch.Engine.Proxies;
using ProxySearch.Engine.Proxies.Http;
using ProxySearch.Engine.ProxyDetailsProvider;
using ProxySearch.Engine.SearchEngines;

namespace ProxySearch.CommandLine
{
    public class Program
    {
        static void Main(string[] args)
        {
            var url = "http://proxysearcher.sourceforge.net/ProxyList.php?type=http&filtered=true&limit=1000";
            ISearchEngine searchEngine = new ParallelSearchEngine(new UrlListSearchEngine(url),
                                                                  new GoogleSearchEngine(40, "http proxy list", null));

            IProxyChecker checker =
                new ProxyCheckerByUrl<HttpProxyDetailsProvider>("http://wikipedia.org/", 0.9);
            IHttpDownloaderContainer httpDownloaderContainer =
                new HttpDownloaderContainer<HttpClientHandler, ProgressMessageHandler>();

            Application application = new Application(searchEngine, checker, httpDownloaderContainer);

            application.ProxyAlive += application_ProxyAlive;
            application.OnError += exception => Console.WriteLine(exception.Message);

            application.SearchAsync().GetAwaiter().GetResult();
        }

        static void application_ProxyAlive(ProxyInfo proxyInfo)
        {
            switch ((HttpProxyTypes)Enum.Parse(typeof(HttpProxyTypes), proxyInfo.Details.Details.Type))
            {
                case HttpProxyTypes.Anonymous:
                case HttpProxyTypes.HighAnonymous:
                    Console.WriteLine(proxyInfo.AddressPort);
                    break;
                default:
                    break;
            }
        }
    }
}
Following example demonstrates how to search socks proxies based on parallel search engine and show them on console application.
using System;
using ProxySearch.Engine;
using ProxySearch.Engine.Checkers;
using ProxySearch.Engine.DownloaderContainers;
using ProxySearch.Engine.Proxies;
using ProxySearch.Engine.Proxies.Socks;
using ProxySearch.Engine.ProxyDetailsProvider;
using ProxySearch.Engine.SearchEngines;
using ProxySearch.Engine.Socks;

namespace ProxySearch.CommandLine
{
    public class Program
    {
        static void Main(string[] args)
        {
            var url = "http://proxysearcher.sourceforge.net/ProxyList.php?type=socks&filtered=true&limit=1000";
            ISearchEngine searchEngine = new ParallelSearchEngine(new UrlListSearchEngine(url),
                                                                  new GoogleSearchEngine(40, "socks proxy list", null));

            IProxyChecker checker = new ProxyCheckerByUrl<SocksProxyDetailsProvider>("http://www.wikipedia.org/", 0.9);
            IHttpDownloaderContainer httpDownloaderContainer =
                new HttpDownloaderContainer<SocksHttpClientHandler, SocksProgressMessageHandler>();

            Application application = new Application(searchEngine, checker, httpDownloaderContainer);

            application.ProxyAlive += application_ProxyAlive;
            application.OnError += exception => Console.WriteLine(exception.Message);

            application.SearchAsync().GetAwaiter().GetResult();
        }

        static void application_ProxyAlive(ProxyInfo proxyInfo)
        {
            switch ((SocksProxyTypes)Enum.Parse(typeof(SocksProxyTypes), proxyInfo.Details.Details.Type))
            {
                case SocksProxyTypes.Socks4:
                case SocksProxyTypes.Socks5:
                    Console.WriteLine(proxyInfo.AddressPort);
                    break;
                default:
                    break;
            }
        }
    }
}