代码之家  ›  专栏  ›  技术社区  ›  Ulvi

如何检查python代理旋转器和用户代理欺骗是否有效?

  •  1
  • Ulvi  · 技术社区  · 6 年前

    我有代理IP轮换和用户代理欺骗的代码,以便在抓取中使用。但由于代码是作为示例提供的,我不知道当我将其添加到代码中时它是否真的有效。

    我是Python的初学者。我只是把它添加到我的。py文件(在用于刮取的代码之后)。当我添加它并开始抓取时,它可以工作并获得所有数据,但我不知道它是否工作。

    1. 我是否必须为这些代码创建另一个文件(用户代理欺骗和IP轮换)?
    2. 当我刮的时候,我怎么知道这些是否有效?
    3. 他们是否定义了URL有关系吗?

    代理旋转:

        from lxml.html import fromstring
        import requests
        from itertools import cycle
        import traceback
    
    proxies = ['121.129.127.209:80', '124.41.215.238:45169', '185.93.3.123:8080', '194.182.64.67:3128', '106.0.38.174:8080', '163.172.175.210:3128', '13.92.196.150:8080']
        proxies = get_proxies()
        proxy_pool = cycle(proxies)
    
    url = 'https://httpbin.org/ip'
    for i in range(1,11):
        proxy = next(proxy_pool)
        print("Request #%d"%i)
        try:
            response = requests.get(url,proxies={"http": proxy, "https": proxy})
            print(response.json())
        except:
            print("Skipping. Connnection error")
    

    用户代理欺骗:

        import requests
    import random
    user_agent_list = [
       #Chrome
        'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
        'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
        'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
        #Firefox
        'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',
        'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)',
        'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)'
    ]
    url = 'https://httpbin.org/user-agent'
    #Lets make 5 requests and see what user agents are used 
    
    #Using Requests 
    for i in range(1,6):
        #Pick a random user agent
        user_agent = random.choice(user_agent_list)
        #Set the headers 
        headers = {'User-Agent': user_agent}
        #Make the request
        response = requests.get(url,headers=headers)
    
        print("Request #%d\nUser-Agent Sent:%s\nUser Agent Recevied by HTTPBin:"%(i,user_agent))
        print(response.content)
        print("-------------------\n\n")
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   CertainPerformance    6 年前

    如果要检查代理和用户代理是否正在旋转,则需要转到请求bin网站,激活一个端点,并在python代码中使用该端点来代替先前请求的端点。

    然后,在执行python代码后,您将检查请求bin,并读取为现在列出的Get请求的用户代理和Ip地址声明的内容。

        2
  •  0
  •   TKrugg    4 年前

    我建议运行大量请求,而不是尝试可视化您获得的IP的分布。您可以在控制台中使用for循环和后台轻松完成此操作 curl 命令:请参见 https://weautomate.org/articles/load-testing-ip-rotation-proxy/