HTTP 프 록 시 를 대량으로 가 져 오고 검증 하 는 Python 스 크 립 트
3249 단어 검증 하 다.HTTP 에이전트파 이 썬 스 크 립 트
1.인망 을 스 캔 할 때 저 는 한 개의 계 정 오류 가 두 번 발생 하여 인증 코드 를 입력 하 라 고 강 요 했 지만 상대방 은 IP 전략 을 실시 하지 않 았 습 니 다.
나 는 10 만(사용자 이름,비밀번호)대기 열 을 유지 하 는 방식 으로 인증 코드 를 돌 았 다.구체 적 인 방법 은 사용자 이름,비밀번호 조합 이 인증 코드 가 필요 할 때 이 해독 서열 을 걸 고 대기 열 끝 에 놓 고 다음 테스트 를 기다 리 며 다른 계 정 비밀 번 호 를 계속 푸 는 것 이다.
이렇게 하면 2/3 의 시간 을 정상 적 인 해독 과 스 캔 을 할 수 있다.
2.미 단 망 의 한 시스템 계 정 을 풀 때 저 는 단일 IP 방문 에 일정한 제한 이 있 기 때문에 요청 빈도 가 너무 빠 르 면 안 됩 니 다.그래서 나 는 72 개의 HTTP 대 리 를 끊 고 이 문 제 를 해결 했다.모든 IP 의 요청 이 정상 인 것 처럼 보이 지만 전체 프로그램 에서 볼 때 효율 은 상당 하 다.
이 편 에서 나 는 HTTP 를 잡 는 스 크 립 트 세 션 을 보 냈 는데,사실은 몇 줄 밖 에 없 었 다.익명 대 리 는 여기에서 캡 처 합 니 다:http://www.xici.net.co/nn/
우선 프 록 시 목록 가 져 오기:
from bs4 import BeautifulSoup
import urllib2
of = open('proxy.txt' , 'w')
for page in range(1, 160):
html_doc = urllib2.urlopen('http://www.xici.net.co/nn/' + str(page) ).read()
soup = BeautifulSoup(html_doc)
trs = soup.find('table', id='ip_list').find_all('tr')
for tr in trs[1:]:
tds = tr.find_all('td')
ip = tds[1].text.strip()
port = tds[2].text.strip()
protocol = tds[5].text.strip()
if protocol == 'HTTP' or protocol == 'HTTPS':
of.write('%s=%s:%s
' % (protocol, ip, port) )
print '%s=%s:%s' % (protocol, ip, port)
of.close()
이 어 대리 가 사용 가능 한 지 검증 했다.나 는 미 단 망 시스템 을 해독 하 는 계 정 이기 때문에 미 단의 페이지 로 표시 했다.
#encoding=gbk
import httplib
import time
import urllib
import threading
inFile = open('proxy.txt', 'r')
outFile = open('available.txt', 'w')
lock = threading.Lock()
def test():
while True:
lock.acquire()
line = inFile.readline().strip()
lock.release()
if len(line) == 0: break
protocol, proxy = line.split('=')
headers = {'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': ''}
try:
conn = httplib.HTTPConnection(proxy, timeout=3.0)
conn.request(method='POST', url='http://e.meituan.com/m/account/login', body='login=ttttttttttttttttttttttttttttttttttttt&password=bb&remember_username=1&auto_login=1', headers=headers )
res = conn.getresponse()
ret_headers = str( res.getheaders() )
html_doc = res.read().decode('utf-8')
print html_doc.encode('gbk')
if ret_headers.find(u'/m/account/login/') > 0:
lock.acquire()
print 'add proxy', proxy
outFile.write(proxy + '
')
lock.release()
else:
print '.',
except Exception, e:
print e
all_thread = []
for i in range(50):
t = threading.Thread(target=test)
all_thread.append(t)
t.start()
for t in all_thread:
t.join()
inFile.close()
outFile.close()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정규 표현 식 및 폼 요소 값 판단더 읽 기 웹 페이지 에서 폼 으로 데 이 터 를 백 엔 드 에 전송 하려 면 데 이 터 를 검증 하고 검사 해 야 합 니 다. 1. 첫 번 째 방법 에서 replace 괄호 안에 있 는 것 은 정규 표현 식 입 니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.