IP-спуфинг с Selenium / Покупка общих прокси?

Я очищаю сайт электронной коммерции с селеном, потому что страницы загружаются Javascipt.

Вот рабочий процесс: 1. Создание драйвера веб-дайвера в режиме виртуального отображения при отправке случайного агента пользователя. Использование случайного пользовательского агента немного снижает ваши шансы на обнаружение. Это не уменьшит шансы блокировки по IP. 2. Для каждого термина запроса скажите "пижама" - создайте поисковый URL для этого сайта - и откройте URL. 3. Получите соответствующие текстовые элементы из Xpath, скажем, 10 лучших идентификаторов продуктов, их цены, название продукта и т. Д. 4. Сохраните их в файле, который я буду обрабатывать далее.

У меня более 38000 таких URL, которые мне нужно получить для элементов при загрузке страницы. Я выполнил многопроцессорную обработку и быстро понял, что процесс завершается сбоем, поскольку через некоторое время сайт был заблокирован, поэтому загрузка страницы не произошла.

Как я могу подделать IP-адрес в Python, и будет ли он работать с селеном для вас, а не с urllib / urlopen?

Помимо установки фактической выборки через xpath, вот основной код - более конкретно, см. Init_driver

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import argparse
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import codecs, urllib, os
import multiprocessing as mp
from my_custom_path import scraping_conf_updated as sf
from fake_useragent import UserAgent

def set_cookies(COOKIES, exp, driver):
    for key, val in COOKIES[exp].items():
        driver.add_cookie({'name': key, 'value': val, 'path': '/', 'secure': False, 'expiry': None})
    return driver


def check_cookies(driver, exp):
    print "printing cookie name & value"
    for cookie in driver.get_cookies():
        if cookie['name'] in COOKIES[exp].keys():
            print cookie['name'], "-->", cookie['value']


def wait_for(driver):
    if conf_key['WAIT_FOR_ID'] != '':
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, conf_key['WAIT_FOR_ID'])))
    elif conf_key['WAIT_FOR_CLASS'] != '':
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CLASS, conf_key['WAIT_FOR_CLASS'])))
    return driver



def init_driver(base_url, url, exp):
    display = Display(visible=0, size=(1024, 768))
    display.start()
    profile = webdriver.FirefoxProfile()
    ua = UserAgent(cache=False)
    profile.set_preference("general.useragent.override",ua.random)
    driver=webdriver.Firefox(profile)
    if len(conf_key['COOKIES'][exp]) != 0:
        driver.get(base_url)
        driver.delete_all_cookies()
        driver = set_cookies(COOKIES, exp, driver)
        check_cookies(driver, exp)
    driver.get(url)
    driver.set_page_load_timeout(300)
    if len(conf_key['POP_UP']['XPATH']) > 0:
        driver = identify_and_close_popup(driver)
    driver = wait_for(driver)
    return driver

0 ответов

Используйте провайдера vpn или http или socks прокси, чтобы изменить ваш кажущийся исходный IP-адрес с вашего целевого веб-сайта

Другие вопросы по тегам