Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » У меня ClientForm не хочет нормально работать, когда она в потоке [RSS Feed]

#1 Окт. 16, 2008 21:16:19

124bit
От:
Зарегистрирован: 2008-04-10
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

У меня ClientForm не хочет нормально работать, когда она в потоке

ClientForm.ParseResponse при многопоточности работает через раз(( то нормально парсит, то нет.. немогу понять почему… возможно ли, что изза многопоточности его использования,?

просто(без потоков) функция в которой используется ClientForm.ParseResponse работает без збоев, а если онп работает сразу в нескольких потоках - то неправильно парсит и ненаходит формы(
и вообще мне кажется, что urllib2 тоже иногда в многопоточности работает не коректно.. как избежать проблем с клиент формой,?



Отредактировано (Окт. 16, 2008 22:04:40)

Офлайн

#2 Окт. 16, 2008 21:35:44

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

У меня ClientForm не хочет нормально работать, когда она в потоке

1. Есть кнопка редактировать.
2. Мы не телепаты. Давайте проблему конкретнее.
3. Не обобщайте, - формулируйте нормально проблему.

Офлайн

#3 Окт. 16, 2008 22:07:55

124bit
От:
Зарегистрирован: 2008-04-10
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

У меня ClientForm не хочет нормально работать, когда она в потоке

воо… простите…это от переизбытка чувств… терь отредактировал))



Офлайн

#4 Окт. 16, 2008 22:44:27

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

У меня ClientForm не хочет нормально работать, когда она в потоке

Лучше, спасибо.
Код бы какой, который иллюстрирует вашу проблему.

Офлайн

#5 Окт. 16, 2008 23:04:41

124bit
От:
Зарегистрирован: 2008-04-10
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

У меня ClientForm не хочет нормально работать, когда она в потоке

import urllib2
import cookielib
import os
import time
import ClientForm
from BeautifulSoup import BeautifulSoup
import urlparse
import random
import shutil
from Tkinter import *
import ImageTk
import win32clipboard, win32con
import bz2
import wx
import sys
import inspect
import ctypes
from ConfigParser import SafeConfigParser as Config
from wx.lib.mixins.listctrl import ColumnSorterMixin
import threading

class DumbProxyPasswordMgr:
def __init__(self):
self.user = self.passwd = None
def add_password(self, realm, uri, user, passwd):
self.user = user
self.passwd = passwd
def find_user_password(self, realm, authuri):
return self.user, self.passwd
class Authoriz:
def GetClipboardText(self):

win32clipboard.OpenClipboard(0)
clip_data = win32clipboard.GetClipboardData(win32con.CF_TEXT)
clip_text = str(clip_data)
win32clipboard.CloseClipboard()
return clip_text

def buttonPress(self,entry_string):
self.capatcha_value=entry_string
self.window.destroy()



def login(self,username,password,cookieFile,loginURL,capatcha=False,capatchaURL=None,
capatchaForm=None,capatcha_name=None,capatchaType='FineReader',
serviceINI=None,proxy_addres=None,proxy_user=None,proxy_pass=None,loginForm="username",passwordForm="password"):
cj = cookielib.LWPCookieJar()
if os.path.isfile(cookieFile):
cj.load(cookieFile)

cookie_handler=urllib2.HTTPCookieProcessor(cj)
if loginURL[:7]!='http://':
loginURL='http://'+loginURL
if proxy_addres!=None:
proxy= urllib2.ProxyHandler({"http" : "http://"+proxy_addres})
proxy_auth_handler = urllib2.ProxyBasicAuthHandler(DumbProxyPasswordMgr ())
proxy_auth_handler.add_password(None, None, proxy_user, proxy_pass)
opener = urllib2.build_opener(proxy,proxy_auth_handler,cookie_handler)
else:
proxy= urllib2.ProxyHandler()
opener = urllib2.build_opener(cookie_handler,proxy)
urllib2.install_opener(opener)
headers = { 'User-Agent' : "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",
'Accept-Language' : 'en-us',
'Accept' : 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*',
'Connection' : 'Keep-Alive' }
data=None
prov=urllib2.urlopen(urllib2.Request('http://'+urlparse.urlsplit(loginURL)[1],
data,headers))
if prov.read().find(username)==-1: #если еще не залогинено - то надо залогиниться
req1=urllib2.Request(loginURL,data,headers)
forms = ClientForm.ParseResponse(urllib2.urlopen(req1))
form = forms[0]
form[loginForm] = username
form[passwordForm] = password
if capatcha==True and capatchaType=='FineReader': # до этой строки все оч просто и понятно,
#а после нее кусок кода не используеться

req=urllib2.Request(capatchaURL,data,headers)
svf = open(capatcha_name,'wb')
src = urllib2.urlopen(req).read()
svf.write(src)
svf.close()
OCRparams = ['FineOCR.exe', capatcha_name, '/lang English', '/send Clipboard']
os.spawnv(os.P_WAIT, 'ABBYY FineReader 8.0 Professional Edition\\FineOCR.exe', OCRparams)
k=GetClipboardText()
form[capatchaForm] = k
if capatcha==True and capatchaType=='Cap':
req=urllib2.Request(capatchaURL,data,headers)
svf = open(capatcha_name,'wb')
src = urllib2.urlopen(req).read()
svf.write(src)
svf.close()
log=open('log.txt','a')
log.writelines('\n'+time.asctime() +' '+loginURL + ' ' +username+ ' ' + str(proxy_addres) + ' capatcha saved, Cap method started')
log.close()
OCRparams = ['Cap.exe',
'/set Section=CAP Name=FileNameCapture value='+capatcha_name + ' File='+serviceINI]
os.spawnv(os.P_WAIT, 'Cap\\Cap.exe', OCRparams)

shutil.move(capatcha_name, "Cap\\"+capatcha_name)
OCRparams = ['Cap.exe', '/ini '+serviceINI]
os.spawnv(os.P_WAIT, 'Cap\\Cap.exe', OCRparams)
log=open('log.txt','a')
log.writelines('\n'+time.asctime() +' '+loginURL + ' ' +username+ ' ' + str(proxy_addres) + ' capatcha solved by Cap')
log.close()
k=GetClipboardText()
form[capatchaForm] = k
if capatcha==True and capatchaType=='Main':
req=urllib2.Request(capatchaURL,data,headers)
svf = open(capatcha_name,'wb')
src = urllib2.urlopen(req).read()
svf.write(src)
svf.close()
log=open('log.txt','a')
log.writelines('\n'+time.asctime() +' '+loginURL + ' ' +username+ ' ' + str(proxy_addres) + ' capatcha saved, Main method started')
log.close()


self.window = Tk()
self.window.title('Cap')
tv = StringVar()
entry1 = Entry(self.window,textvariable=tv,takefocus=True)
entry1.grid(row=1, column=0)
imtk = ImageTk.PhotoImage(file = capatcha_name)
panel1 = Label(self.window, image=imtk)
panel1.grid(row=0, column=0)


button = Button(self.window,text='Ok', command=lambda name="Guido": auth.buttonPress(entry1.get()))
button.grid(row=3, column=0)
self.window.mainloop()
k=auth.capatcha_value
form[capatchaForm] = k

#-------------------------------------------
res=urllib2.urlopen(form.click()).read() # заполнил форму, отправил...
if urllib2.urlopen(urllib2.Request('http://'+urlparse.urlsplit(loginURL)[1], # проверил, вошло ли?
data,headers)).read().find(username)==-1:

cj.save(cookieFile)
return 0,'login feild'


else:

cj.save(cookieFile)
return 1,'login complit'

else:

cj.save(cookieFile)
return 1,'allready logined'

serf=Authoriz()
#serf.login('124bit','1993715','cookie2.txt','http://www.thinkbux.com/','128.223.8.113:3124')
#serf.login('blackm','777777','cookie1.txt','http://www.thinkbux.com/','128.2.223.63:3128')
по одному работает.. а одновременно в 2 потоках не хочет.. ошибки лезут.. зашло или не зашло надо в кукисах глядеть… кстати, нет ли советов как это оптимизировать,,?

вообще по моим раСчетам эта бодяга должна почти на любой сайт логиниться.



Отредактировано (Окт. 16, 2008 23:50:49)

Офлайн

#6 Окт. 16, 2008 23:24:35

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

У меня ClientForm не хочет нормально работать, когда она в потоке

O_O
Код бы откомментировать не мешало бы.

ошибки лезут
Какие именно?
Да и я не вижу в коде, где используются потоки и как.

Е, да вы спамбота написать решили. Не пойдёт.

Офлайн

#7 Окт. 16, 2008 23:40:01

124bit
От:
Зарегистрирован: 2008-04-10
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

У меня ClientForm не хочет нормально работать, когда она в потоке

ээээ нее… эт никакой не спамбот!!! эт клас автологинер на буксовые сайты.. а вообще а проэкте многоуровневая система заработка в нэте)
так вот, если запустить
#serf.login('124bit','1993715','cookie2.txt','http://www.thinkbux.com/','128.223.8.113:3124')
#serf.login('blackm','777777','cookie1.txt','http://www.thinkbux.com/','128.2.223.63:3128')
в два потока одновременно - оно выкидывает ошибки.. разные, как когда.. иногда клиент форма не парсит - выдает что на странице нет форм(при том что она точно парсит то, где есть формы..) иногда пишет что какаято ошибка с запросом чего то.. я тот комп, где полный код уже выключил, ща посмотреть не могу ((

..откоментировал текст программы.



Отредактировано (Окт. 16, 2008 23:52:03)

Офлайн

  • Начало
  • » Web
  • » У меня ClientForm не хочет нормально работать, когда она в потоке[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version