IP-adres dynamisch wijzigen?

Beschouw het geval,
Ik wil regelmatig websites crawlen, maar mijn IP-adres werd na een bepaalde dag/limiet geblokkeerd.

Dus, hoe kan ik mijn IP-adres dynamisch of andere ideeën wijzigen?


Antwoord 1, autoriteit 100%

Een aanpak met behulp van Scrapyzal gebruik maken van twee componenten, RandomProxyen RotateUserAgentMiddleware.

Wijzig DOWNLOADER_MIDDLEWARESals volgt. U moet de nieuwe componenten invoegen in de settings.py:

DOWNLOADER_MIDDLEWARES = {
    'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': 90,
    'tutorial.randomproxy.RandomProxy': 100,
    'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 110,
    'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware' : None,
    'tutorial.spiders.rotate_useragent.RotateUserAgentMiddleware' :400,    
}

Willekeurige proxy

Je kunt scrapy-proxiesgebruiken. Dit onderdeel verwerkt Scrapy-verzoeken met behulp van een willekeurige proxy uit een lijst om IP-ban te vermijden en de crawlsnelheid te verbeteren.

U kunt uw proxylijst samenstellen door snel op internet te zoeken. Kopieer links in het bestand list.txtvolgens het gevraagde url-formaat.

Rotatie van user-agent

Voor elk scrapy-verzoek wordt een willekeurige user-agent gebruikt uit een lijst die u vooraf definieert:

class RotateUserAgentMiddleware(UserAgentMiddleware):
    def __init__(self, user_agent=''):
        self.user_agent = user_agent
    def process_request(self, request, spider):
        ua = random.choice(self.user_agent_list)
        if ua:
            request.headers.setdefault('User-Agent', ua)
            # Add desired logging message here.
            spider.log(
                u'User-Agent: {} {}'.format(request.headers.get('User-Agent'), request),
                level=log.DEBUG
            )
    # the default user_agent_list composes chrome,I E,firefox,Mozilla,opera,netscape
    # for more user agent strings,you can find it in http://www.useragentstring.com/pages/useragentstring.php
    user_agent_list = [
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
        "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
        "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
        "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
        "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
    ]

Meer details hier.


Antwoord 2, autoriteit 34%

U kunt proberen proxyservers te gebruiken om te voorkomen dat u wordt geblokkeerd. Er zijn diensten die werkvolmachten leveren. Het beste wat ik heb geprobeerd is https://gimmeproxy.com– ze controleren regelmatig proxy’s op verschillende parameters.

Om een ​​proxy van hen te krijgen, hoeft u alleen maar het volgende verzoek in te dienen:

https://gimmeproxy.com/api/getProxy

Ze zullen een JSON-antwoord geven met alle proxygegevens die u later indien nodig kunt gebruiken:

{
  "supportsHttps": true,
  "protocol": "socks5",
  "ip": "179.162.22.82",
  "port": "36915",
  "get": true,
  "post": true,
  "cookies": true,
  "referer": true,
  "user-agent": true,
  "anonymityLevel": 1,
  "websites": {
    "example": true,
    "google": false,
    "amazon": true
  },
  "country": "BR",
  "tsChecked": 1517952910,
  "curl": "socks5://179.162.22.82:36915",
  "ipPort": "179.162.22.82:36915",
  "type": "socks5",
  "speed": 37.78,
  "otherProtocols": {}
}

Je kunt het zo gebruiken met Curl:

curl -x socks5://179.162.22.82:36915 http://example.com

Antwoord 3, autoriteit 14%

Als je R gebruikt, zou je het web kunnen crawlen via TOR. Ik denk dat TOR zijn IP-adres elke 10 minuten (?) automatisch reset. Ik denk dat er een manier is om TOR te dwingen het IP-adres met kortere intervallen te veranderen, maar dat werkte niet voor mij. In plaats daarvan kunt u meerdere TOR-instanties instellen en vervolgens schakelen tussen de onafhankelijke instanties (hier vindt u een goede uitleg over het instellen van meerdere TOR-instanties: https://tor.stackexchange.com/questions/2006/how-to-run-multiple-tor-browsers-with- different-ips)

Daarna zou je zoiets als het volgende kunnen doen in R (gebruik de poorten van je onafhankelijke TOR-browsers en een lijst met useragents. Elke keer dat je de ‘getURL’-functie aanroept, blader je door je lijst met poorten/useragents)

p>

library(RCurl)
port <- c(a list of your ports)
proxy <- paste("socks5h://127.0.0.1:",port,sep="")
ua <- c(a list of your useragents)
opt <- list(proxy=sample(proxy,1),
            useragent=sample(ua,1),
            followlocation=TRUE,
            referer="",
            timeout=timeout,
            verbose=verbose,
            ssl.verifypeer=ssl)
webpage <- getURL(url=url,.opts=opt)

Antwoord 4, autoriteit 6%

Sommige VPN-applicaties stellen u in staat uw IP-adres automatisch te wijzigen in een nieuw willekeurig IP-adres met een vast interval, zoals: elke 2 minuten. Beide HMA! Pro VPNen VPN4ALL software ondersteunen deze functie.


Antwoord 5

Waarschuwing over VPN’s: controleer hun Algemene voorwaarden zorgvuldig, want het gebruik ervan druist in tegen hun gebruikersbeleid (een voorbeeld hiervan is Astrill). Ik heb een scraptool geprobeerd en mijn account is vergrendeld


Antwoord 6

Als je openbare IP’s hebt. Voeg ze toe aan je interface en als je Linux gebruikt, gebruik dan Iptables om van openbare IP te wisselen.

Iptables-voorbeeldregels voor twee IP’s

iptables -t nat -A POSTROUTING -m statistic --mode random --probability 0.5 -j SNAT --to-source 192.168.0.2
iptables -t nat -A POSTROUTING -m statistic --mode random --probability 0.5 -j SNAT --to-source 192.168.0.3

Als je 4 IP’s hebt, wordt de kans 0,25.

U kunt met eenvoudige stappen ook uw eigen proxy maken.

Met deze regels kan de proxyserver zijn uitgaande IPS wijzigen.

Other episodes