ទាញយកចំណុចបញ្ចប់ប្រូកស៊ីមួយជួរតារាងម្តង
រក្សាអាសយដ្ឋាន IP ឱ្យជាមួយច្រករបស់វា ហើយផ្ទៀងផ្ទាត់វាលនានាពេលញែកតារាង HTML នៃបញ្ជីប្រូកស៊ីដែលបានរក្សាទុក។
ញែកជួរប្រូកស៊ីនីមួយៗជាឯកតាមួយ។ ប្រសិនបើអ្នកធ្វើឱ្យ td ដែលត្រូវគ្នាទាំងអស់នៅទូទាំងទំព័ររាបស្មើ ហើយដាក់លទ្ធផលជាក្រុមតាមចំនួនថេរ អាសយដ្ឋានពីជួរមួយអាចភ្ជាប់ជាមួយច្រកពីជួរបន្ទាប់ នៅពេលក្រឡាមួយបាត់ ឬតារាងផ្សេងលេចឡើង។
សម្រាប់ HTML ដែលកម្មវិធីបានទទួលរួចហើយ តារាងដែលជួរឈរពីរដំបូងជាអាសយដ្ឋាន IP និងច្រក អាចញែកដូចខាងក្រោម៖
import ipaddress
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
table = soup.select_one(table_selector)
if table is None:
raise ValueError("Expected proxy table was not found")
endpoints = set()
for row in table.select("tbody tr"):
cells = row.find_all("td", recursive=False)
if len(cells) < 2:
continue
try:
address = ipaddress.ip_address(cells[0].get_text(strip=True))
port = int(cells[1].get_text(strip=True))
except ValueError:
continue
if 1 <= port <= 65535:
endpoints.add((str(address), port))html និង table_selector ជាការបញ្ចូលរបស់កម្មវិធី។ ជ្រើសរើសឧបករណ៍ជ្រើស និងការផ្គូផ្គងជួរឈរពីការសម្គាល់ពិតប្រាកដរបស់ប្រភព។ បញ្ជីប្រូកស៊ីឥតគិតថ្លៃ គឺជាប្រភពមួយនៃកំណត់ត្រាចំណុចបញ្ចប់ ប៉ុន្តែជួររបស់វាគួរត្រូវបានពិនិត្យមុនពេលជ្រើសការផ្គូផ្គងនោះ។ ទាំង ID តារាងពីអតីតកាល និងការអះអាងថាទំព័រមួយមានកំណត់ត្រា 300 ពិតប្រាកដ មិនមែនជាគ្រោងការណ៍ឋិតថេរទេ។
សំណុំនេះដកគូអាសយដ្ឋាន-និង-ច្រកស្ទួន ខណៈរក្សាទំនាក់ទំនងរបស់គូនីមួយៗ។ ទោះយ៉ាងណា ការនាំចូលដែលមិនបានរំពឹងទុកជាមួយលទ្ធផលសូន្យនៅតែត្រូវស៊ើបអង្កេត៖ តារាងអាចបានផ្លាស់ប្តូរ ឬឯកសារដែលទាញបានអាចជាទំព័របញ្ហាប្រឈមជំនួសឱ្យបញ្ជី។
រក្សាពិធីការដែលបានប្រកាស និងវាលពេលវេលាត្រួតពិនិត្យជាមួយចំណុចបញ្ចប់ នៅពេលវាសំខាន់។ ការទាញយក IP និងច្រកដែលអាចទុកចិត្តបាន គ្រាន់តែបញ្ជាក់ទម្រង់ មិនមែនថាចំណុចបញ្ចប់នោះផ្តល់សេវា HTTP ឬ SOCKS ដែលដំណើរការនៅពេលនេះទេ។
ជួរក្បាល ឬជួរតម្រងមិនមែនជាចំណុចបញ្ចប់ទេ។ ជួរដែលមានតែក្រឡា th ត្រូវបានរំលង រីឯវាលទទេ ឬមិនមែនអាសយដ្ឋាន នឹងបរាជ័យក្នុងការផ្ទៀងផ្ទាត់។ កុំបោះបង់ជួរទីមួយ និងជួរចុងក្រោយតាមទីតាំង៖ ទាំងពីរអាចជាចំណុចបញ្ចប់ពិតប្រាកដ បន្ទាប់ពីប្លង់ទំព័រផ្លាស់ប្តូរ។