সেলেনিয়াম + ক্রোমড্রাইভার ঠিক 4 মিনিটের জন্য আটকে গেল


1

আমি রিমোট সার্ভার থেকে ক্লাউডফ্লেয়ার সুরক্ষার সাথে একটি ওয়েবপৃষ্ঠাটি স্ক্র্যাপ করার চেষ্টা করছি:

#!/usr/bin/env python3

from xvfbwrapper import Xvfb
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import logging
display = Xvfb()
display.start()

try:
    logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
    logger = logging.getLogger('main')
    chrome_options = Options()
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--disable-setuid-sandbox")
    browser = webdriver.Chrome(chrome_options=chrome_options)
    browser.get('url ...')
    time.sleep(10)
    logger.info('woke up')
    logger.info(browser.get_cookies())
finally:
    display.stop()

সমস্যাটি হ'ল get_cookies এর কলটি 4 মিনিটের জন্য অবরুদ্ধ। এছাড়াও যদি আমি ট্র্যাভারস ওয়েব সাইটটি চালিয়ে যাওয়ার চেষ্টা করি তবে আমি ঠিক 4 মিনিটের জন্য সার্ভারের প্রতিটি অনুরোধকেও আটকে রাখছি:

root@server:~# ./s.py
2019-02-05 00:52:11,509 - main - INFO - woke up
2019-02-05 00:56:06,506 - main - INFO - [some cookies ...]

আমি স্ক্রিপ্টটি আটকা অবস্থায় হত্যা করার চেষ্টা করেছি এবং কোডটি এখানে স্টক দেখছি:

root@server:~# ./s.py
2019-02-05 01:00:31,333 - main - INFO - woke up
^CTraceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 380, in _make_request
    httplib_response = conn.getresponse(buffering=True)
TypeError: getresponse() got an unexpected keyword argument 'buffering'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./s.py", line 22, in <module>
logger.info(browser.get_cookies())
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 841, in get_cookies
    return self.execute(Command.GET_ALL_COOKIES)['value']
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 319, in execute
    response = self.command_executor.execute(driver_command, params)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/remote_connection.py", line 374, in execute
    return self._request(command_info[0], url, body=data)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/remote_connection.py", line 397, in _request
    resp = self._conn.request(method, url, body=body, headers=headers)
  File "/usr/lib/python3/dist-packages/urllib3/request.py", line 66, in request
**urlopen_kw)
  File "/usr/lib/python3/dist-packages/urllib3/request.py", line 87, in request_encode_url
return self.urlopen(method, url, **extra_kw)
  File "/usr/lib/python3/dist-packages/urllib3/poolmanager.py", line 321, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 601, in urlopen
chunked=chunked)
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 383, in _make_request
    httplib_response = conn.getresponse()
  File "/usr/lib/python3.6/http/client.py", line 1331, in getresponse
response.begin()
  File "/usr/lib/python3.6/http/client.py", line 297, in begin
version, status, reason = self._read_status()
  File "/usr/lib/python3.6/http/client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.6/socket.py", line 586, in readinto
return self._sock.recv_into(b)
KeyboardInterrupt

এছাড়াও আমি স্ট্রাইসের সাথে স্ক্রিপ্টের সাথে সংযুক্ত করার চেষ্টা করেছি এবং স্কার্ট থেকে প্যাকেট পাওয়ার জন্য স্ক্রিপ্টটি কেবল অবরুদ্ধ করে রেখেছি:

root@server:~# strace -p 7545
strace: Process 7545 attached
recvfrom(4, 0x1ec58f0, 8192, 0, NULL, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)

আমি ক্রোম / সেলেনিয়ামের বিভিন্ন সংস্করণ দিয়ে চেষ্টা করেছি এবং সর্বদা একই ফলাফল পেয়েছি: 4 মিনিটের জন্য স্টিকিং।

উবুন্টু 18.04.1 এলটিএস

গুগল ক্রোম 66.0.3359.181

ChromeDriver 2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb)

নাম: সেলেনিয়াম সংস্করণ: 3.141.0

নাম: xvfbwrapper সংস্করণ: 0.2.9

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.