Авторизация \ отправка сообщения на RuTracker
Помогите, пожалуйста, разобраться с отправкой сообщения на RuTracker.
import requests
session = requests.session()
session.post('https://rutracker.org/forum/login.php', {
'login_username': 'nafanz',
'login_password': 'XXX',
'login': 'pushed',
'redirect': 'index.php'
}
)
pm = session.post('https://rutracker.org/forum/privmsg.php?mode=post&u=XXX',
{
'subject': 'Test',
'message': 'Test-test',
}
)
print(pm.text)
Авторизацию я прошел cудя по тому, что у меня возвращается:
<span class="top-menu-username-wrap">
<img class="log-out-icon" src="https://static.t-ru.org/templates/v1/images/logout_1.png" onclick="return post2url('login.php', {logout: 1});" alt="" title="Выход">
<a id="logged-in-username" class="truncated-text" href="https://rutracker.org/forum/profile.php?mode=viewprofile&u=4008894">nafanz</a>
</span>
но:
<div class="spacer_10"></div>
<table class="forumline message">
<tr>
<th>Информация</th>
</tr>
<tr>
<td>
<div class="mrg_16">
Запрос не был обработан [форма не подписана]<br><br>
Вернитесь назад, обновите страницу и повторите запрос еще раз<br><br>
Возможные причины: у вас отключен JavaScript, или сессия устарела<br><br>
<a href="#" onclick="history.back(); return false;">Вернуться на предыдущую страницу</a>
</div>
<div class="mrg_12">
<div class="w60 bCenter mrg_10">
<p class="med">это сообщение не было отправлено:</p>
<textarea rows="12" cols="92" class="med w100">Test
Test-test</textarea>
</div>
</div>
<div class="mrg_12"></div>
</td>
</tr>
</table>
<div class="spacer_10"></div>
В чем может быть проблема?
Ответы (2 шт):
Автор решения: eri
→ Ссылка
Это прозрачная CAPTCHA на яваскрипте. Если вы написали сообщение и не произвели других действий (например, не подвигали мышкой) в окне - оно не отправится.
Попробуйте Selenium
Автор решения: Ivan Simonov
→ Ссылка
Решил проблему так:
from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'/home/XXX/Документы/geckodriver/geckodriver')
driver.get("https://rutracker.org/forum/login.php")
login_username = driver.find_element_by_xpath('//*[@id="login-form-full"]/table/tbody/tr[2]/td/div/table/tbody/tr[1]/td[2]/input')
login_username.send_keys("Логин")
login_password = driver.find_element_by_xpath('//*[@id="login-form-full"]/table/tbody/tr[2]/td/div/table/tbody/tr[2]/td[2]/input')
login_password.send_keys("Пароль")
login = driver.find_element_by_xpath('//*[@id="login-form-full"]/table/tbody/tr[2]/td/div/table/tbody/tr[4]/td/input')
login.click()
driver.get("https://rutracker.org/forum/privmsg.php?mode=post&u=XXX")
subject = driver.find_element_by_xpath('//*[@id="post-msg-subj"]')
subject.send_keys("Test")
message = driver.find_element_by_xpath('//*[@id="post-textarea"]')
message.send_keys("Test-test")
send = driver.find_element_by_xpath('//*[@id="post-submit-btn"]')
send.click()